home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 21 / Cream of the Crop 21 (Terry Blount) (October 1996).iso / program / inter51c.zip / INTERRUP.J < prev    next >
Text File  |  1996-07-28  |  349KB  |  9,558 lines

  1. Interrupt List, part 10 of 15
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996 Ralf Brown
  3. --------m-2F4300-----------------------------
  4. INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - INSTALLATION CHECK
  5.     AX = 4300h
  6. Return: AL = 80h XMS driver installed
  7.     AL <> 80h no driver
  8. Notes:    XMS gives access to extended memory and noncontiguous/nonEMS memory
  9.       above 640K
  10.     this installation check DOES NOT follow the format used by other
  11.       software
  12. SeeAlso: AX=4310h
  13. Index:    installation check;XMS version 2+
  14. --------m-2F4308-----------------------------
  15. INT 2F U - HIMEM.SYS v2.77+ - GET A20 HANDLER NUMBER
  16.     AX = 4308h
  17. Return: AL = 43h if supported
  18.         BL = A20 handler number (value of /MACHINE:nn switch)
  19.         BH = AT A20 switch time (00h medium, 01h fast, 02h slow)
  20. Note:    if the A20 handler number returned in BL is 00h, an external handler
  21.       is being used (see AX=4330h)
  22. SeeAlso: AX=4309h,AX=4330h
  23. --------m-2F4309-----------------------------
  24. INT 2F U - HIMEM.SYS v3.09+ - GET XMS HANDLE TABLE
  25.     AX = 4309h
  26. Return: AL = 43h if function supported
  27.         ES:BX -> XMS handle table (see #1976)
  28. Note:    HIMEM.SYS v3.09 is part of MS-DOS 6.0.
  29. SeeAlso: AX=4308h
  30.  
  31. Format of XMS handle table:
  32. Offset    Size    Description    (Table 1976)
  33.  00h    BYTE    ??? (01h in HIMEM.SYS v3.09)
  34.  01h    BYTE    size of one handle descriptor
  35.  02h    WORD    number of handles (default = 20h)
  36.  04h    DWORD    pointer to XMS handle array (see #1977)
  37. SeeAlso: #2006
  38.  
  39. Format of XMS handle descriptor [array]:
  40. Offset    Size    Description    (Table 1977)
  41.  00h    BYTE    flag
  42.         01h=free, 02h=used, 04h=in pool but not associated with any EMB
  43.  01h    BYTE    lock count (00h=unlocked)
  44.  02h    DWORD    address of XMS block in KB (shift left by 10 for abs. address)
  45.  06h    DWORD    size of XMS block in KB
  46. --------m-2F4310-----------------------------
  47. INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - GET DRIVER ADDRESS
  48.     AX = 4310h
  49. Return: ES:BX -> driver entry point (see #1978,#1979,#1982,#1989,#1998,#2003)
  50. Notes:    HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
  51.     HIMEM.SYS requires at least 256 bytes free stack space when calling
  52.       the driver entry point
  53. SeeAlso: AX=4300h,AX=4310h"Cloaking",AX=4310h"Netroom",AX=4310h"XMZ"
  54.  
  55. Format of XMS driver entry point:
  56. Offset    Size    Description    (Table 1978)
  57.  00h  5 BYTEs    jump to actual handler
  58.         either short jump (EBh XXh) followed by three NOPs or
  59.           far jump (EAh XXXX:XXXX) to a program which has hooked itself
  60.           into the XMS driver chain
  61. Note:    to hook into the XMS driver chain, a program should follow the chain of
  62.       far jumps until it reaches the short jump of the driver at the end
  63.       of the chain; this short jump is to be replaced with a far jump to
  64.       the new handler's entry point, which should contain a short jump
  65.       followed by three NOPs.  The new handler must return to the address
  66.       pointed at by the short jump which was overwritten.  Using this
  67.       method, the new handler becomes the first to see every XMS request.
  68.  
  69. (Table 1979)
  70. Call the XMS driver "Get XMS version number" function with:
  71.     AH = 00h
  72. Return: AX = XMS version (in BCD, AH=major, AL=minor)
  73.     BX = internal revision number (in BCD for HIMEM.SYS)
  74.     DX = High Memory Area (HMA) state
  75.         0001h HMA (1M to 1M + 64K) exists
  76.         0000h HMA does not exist
  77. SeeAlso: #1980,#1981,#1986,#1987,#1993
  78.  
  79. (Table 1980)
  80. Call the XMS driver "Request High Memory Area" function with:
  81.     AH = 01h
  82.     DX = memory in bytes (for TSR or device drivers)
  83.         FFFFh if application program
  84. Return: AX = status
  85.         0001h success
  86.         0000h failure
  87.         BL = error code (80h,81h,90h,91h,92h) (see #2004)
  88. Note:    HIMEM.SYS will fail function 01h with error code 91h if AL=40h and
  89.       DX=KB free extended memory returned by last call of function 08h
  90. SeeAlso: #1981,#2013
  91.  
  92. (Table 1981)
  93. Call the XMS driver "Release High Memory Area" function with:
  94.     AH = 02h
  95. Return: AX = status
  96.         0001h success
  97.         0000h failure
  98.         BL = error code (80h,81h,90h,93h) (see #2004)
  99. SeeAlso: #1980
  100.  
  101. (Table 1982)
  102. Call the XMS driver "Global enable A20, for using the HMA" function with:
  103.     AH = 03h
  104. Return: AX = status
  105.         0001h success
  106.         0000h failure
  107.         BL = error code (80h,81h,82h) (see #2004)
  108. SeeAlso: #1983,#1984
  109.  
  110. (Table 1983)
  111. Call the XMS driver "Global disable A20" function with:
  112.     AH = 04h
  113. Return: AX = status
  114.         0001h success
  115.         0000h failure
  116.         BL = error code (80h,81h,82h,94h) (see #2004)
  117. SeeAlso: #1982,#1985
  118.  
  119. (Table 1984)
  120. Call the XMS driver "Local enable A20" function with:
  121.     AH = 05h
  122. Return: AX = status
  123.         0001h success
  124.         0000h failure
  125.         BL = error code (80h,81h,82h) (see #2004)
  126. Note:    this function is used for direct access to extended memory
  127. SeeAlso: #1982,#1985
  128.  
  129. (Table 1985)
  130. Call the XMS driver "Local disable A20" function with:
  131.     AH = 06h
  132. Return: AX = status
  133.         0001h success
  134.         0000h failure
  135.         BL = error code (80h,81h,82h,94h) (see #2004)
  136. SeeAlso: #1983,#1984
  137.  
  138. (Table 1986)
  139. Call the XMS driver "Query A20 state" function with:
  140.     AH = 07h
  141. Return: AX = status
  142.         0001h enabled
  143.         0000h disabled
  144.         BL = error code (00h,80h,81h) (see #2004)
  145. SeeAlso: #1979,#1987
  146.  
  147. (Table 1987)
  148. Call the XMS driver "Query free extended memory" function with:
  149.     AH = 08h
  150.     BL = 00h (some implementations leave BL unchanged on success)
  151. Return: AX = size of largest extended memory block in KB
  152.     DX = total extended memory in KB
  153.     BL = error code (00h,80h,81h,A0h) (see #2004)
  154. Note:    this function does not include the HMA in the returned memory sizes
  155. SeeAlso: #1979,#1986,#1988,#2000
  156.  
  157. (Table 1988)
  158. Call the XMS driver "Allocate extended memory block" function with:
  159.     AH = 09h
  160.     DX = Kbytes needed
  161. Return: AX = status
  162.         0001h success
  163.         DX = handle for memory block
  164.         0000h failure
  165.         BL = error code (80h,81h,A0h) (see #2004)
  166. SeeAlso: #1987,#1990,#1993,#1994,#1995,#2001
  167.  
  168. (Table 1989)
  169. Call the XMS driver "Free extended memory block" function with:
  170.     AH = 0Ah
  171.     DX = handle of block to free
  172. Return: AX = status
  173.         0001h success
  174.         0000h failure
  175.         BL = error code (80h,81h,A2h,ABh) (see #2004)
  176. SeeAlso: #1988,#2001
  177.  
  178. (Table 1990)
  179. Call the XMS driver "Move extended memory block" function with:
  180.     AH = 0Bh
  181.     DS:SI -> EMM structure (see #2005)
  182. Return: AX = status
  183.         0001h success
  184.         0000h failure
  185.         BL = error code (80h-82h,A3h-A9h) (see #2004)
  186. Note:    if either handle in the EMM structure is 0000h, the corresponding
  187.       offset is considered to be an absolute segment:offset address in
  188.       directly addressable memory
  189. SeeAlso: #1988,#1991
  190.  
  191. (Table 1991)
  192. Call the XMS driver "Lock extended memory block" function with:
  193.     AH = 0Ch
  194.     DX = handle of block to lock
  195. Return: AX = status
  196.         0001h success
  197.         DX:BX = 32-bit physical address of locked block
  198.         0000h failure
  199.         BL = error code (80h,81h,A2h,ACh,ADh) (see #2004)
  200. Note:    MS Windows 3.x rejects this function for handles allocated after
  201.       Windows started
  202. SeeAlso: #1988,#1990,#1992
  203.  
  204. (Table 1992)
  205. Call the XMS driver "Unlock extended memory block" function with:
  206.     AH = 0Dh
  207.     DX = handle of block to unlock
  208. Return: AX = status
  209.         0001h success
  210.         0000h failure
  211.         BL = error code (80h,81h,A2h,AAh) (see #2004)
  212. SeeAlso: #1991
  213.  
  214. (Table 1993)
  215. Call the XMS driver "Get handle information" function with:
  216.     AH = 0Eh
  217.     DX = handle for which to get info
  218. Return: AX = status
  219.         0001h success
  220.         BH = block's lock count
  221.         BL = number of free handles left
  222.         DX = block size in KB
  223.         0000h failure
  224.         BL = error code (80h,81h,A2h) (see #2004)
  225. BUG:    MS Windows 3.10 acts as though unallocated handles are in use
  226. Note:    MS Windows 3.00 has problems with this call
  227. SeeAlso: #1979,#1988,#2002
  228.  
  229. (Table 1994)
  230. Call the XMS driver "Reallocate extended memory block" function with:
  231.     AH = 0Fh
  232.     DX = handle of block
  233.     BX = new size of block in KB
  234. Return: AX = status
  235.         0001h success
  236.         0000h failure
  237.         BL = error code (80h,81h,A0h-A2h,ABh) (see #2004)
  238. SeeAlso: #1988,#1997
  239.  
  240. (Table 1995)
  241. Call the XMS driver "Request upper memory block" function with:
  242.     AH = 10h
  243.     DX = size of block in paragraphs
  244. Return: AX = status
  245.         0001h success
  246.         BX = segment address of UMB
  247.         DX = actual size of block
  248.         0000h failure
  249.         BL = error code (80h,B0h,B1h) (see #2004)
  250.         DX = largest available block
  251. Notes:    Upper Memory consists of non-EMS memory between 640K and 1024K
  252.     the XMS driver need not implement functions 10h through 12h to be
  253.       considered compliant with the standard
  254.     under DOS 5+, if CONFIG.SYS contains the line DOS=UMB, then no upper
  255.       memory blocks will be available for allocation because all blocks
  256.       have been grabbed by MS-DOS while booting
  257. SeeAlso: #1988,#1996,#2014,INT 21/AH=58h"UMB"
  258.  
  259. (Table 1996)
  260. Call the XMS driver "Release upper memory block" function with:
  261.     AH = 11h
  262.     DX = segment address of UMB to release
  263. Return: AX = status
  264.         0001h success
  265.         0000h failure
  266.         BL = error code (80h,B2h) (see #2004)
  267. Note:    the XMS driver need not implement functions 10h through 12h to be
  268.       considered compliant with the standard
  269. SeeAlso: #1989,#1995,#1997
  270.  
  271. (Table 1997)
  272. Call the XMS v3.0+ driver "Reallocate upper memory block" function with:
  273.     AH = 12h
  274.     DX = segment address of UMB to resize
  275.     BX = new size of block in paragraphs
  276. Return: AX = status
  277.         0001h success
  278.         0000h failure
  279.         BL = error code (80h,B0h,B2h) (see #2004)
  280.         DX = maximum available size (RM386)
  281. Note:    the XMS driver need not implement functions 10h through 12h to be
  282.       considered compliant with the standard
  283. SeeAlso: #1994,#1995,#1996,#2012
  284.  
  285. (Table 1998)
  286. Call the QEMM v5.11 "???" function with:
  287.     AH = 34h  (QEMM 5.11 only, undocumented)
  288.     ???
  289. Return: ???
  290. SeeAlso: #1999
  291.  
  292. (Table 1999)
  293. Call the QEMM v5.11 "???" function with:
  294.     AH = 44h  (QEMM 5.11 only, undocumented)
  295.     ???
  296. Return: ???
  297. SeeAlso: #1998,#2012
  298.  
  299. (Table 2000)
  300. Call the XMS v3.0 driver "Query free extended memory" function with:
  301.     AH = 88h
  302. Return: EAX = largest block of extended memory, in KB
  303.     BL = status (00h,80h,81h,A0h) (see #2004)
  304.     ECX = physical address of highest byte of memory
  305.         (valid even on error codes 81h and A0h)
  306.     EDX = total Kbytes of extended memory (0 if status A0h)
  307. BUG:    HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
  308.       are called
  309. SeeAlso: #1987,#2001
  310.  
  311. (Table 2001)
  312. Call the XMS v3.0 driver "Allocate any extended memory" function with:
  313.     AH = 89h
  314.     EDX = Kbytes needed
  315. Return: AX = status
  316.         0001h success
  317.         DX = handle for allocated block (free with AH=0Ah) (see #1989)
  318.         0000h failure
  319.         BL = status (80h,81h,A0h,A1h,A2h) (see #2004)
  320. SeeAlso: #1988,#2000
  321.  
  322. (Table 2002)
  323. Call the XMS v3.0 driver "Get extended EMB handle information" function with:
  324.     AH = 8Eh
  325.     DX = handle
  326. Return: AX = status
  327.         0001h success
  328.         BH = block's lock count
  329.         CX = number of free handles left
  330.         EDX = block size in KB
  331.         0000h failure
  332.         BL = status (80h,81h,A2h) (see #2004)
  333. BUG:    MS-DOS 6.0 HIMEM.SYS leaves CX unchanged
  334. SeeAlso: #1993,#2001,#2003
  335.  
  336. (Table 2003)
  337. Call the XMS v3.0 driver "Reallocate any extended memory block" function with:
  338.     AH = 8Fh
  339.     DX = unlocked memory block handle
  340.     EBX = new size in KB
  341. Return: AX = status
  342.         0001h success
  343.         0000h failure
  344.         BL = status (80h,81h,A0h-A2h,ABh) (see #2004)
  345. BUG:    HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
  346.       are called
  347. SeeAlso: #1994,#2002
  348.  
  349. (Table 2004)
  350. Values for XMS error code returned in BL:
  351.  00h    successful
  352.  80h    function not implemented
  353.  81h    Vdisk was detected
  354.  82h    an A20 error occurred
  355.  8Eh    a general driver error
  356.  8Fh    unrecoverable driver error
  357.  90h    HMA does not exist or is not managed by XMS provider
  358.  91h    HMA is already in use
  359.  92h    DX is less than the /HMAMIN= parameter
  360.  93h    HMA is not allocated
  361.  94h    A20 line still enabled
  362.  A0h    all extended memory is allocated
  363.  A1h    all available extended memory handles are allocated
  364.  A2h    invalid handle
  365.  A3h    source handle is invalid
  366.  A4h    source offset is invalid
  367.  A5h    destination handle is invalid
  368.  A6h    destination offset is invalid
  369.  A7h    length is invalid
  370.  A8h    move has an invalid overlap
  371.  A9h    parity error occurred
  372.  AAh    block is not locked
  373.  ABh    block is locked
  374.  ACh    block lock count overflowed
  375.  ADh    lock failed
  376.  B0h    only a smaller UMB is available
  377.  B1h    no UMB's are available
  378.  B2h    UMB segment number is invalid
  379.  
  380. Format of EMM structure:
  381. Offset    Size    Description    (Table 2005)
  382.  00h    DWORD    number of bytes to move (must be even)
  383.  04h    WORD    source handle
  384.  06h    DWORD    offset into source block
  385.  0Ah    WORD    destination handle
  386.  0Ch    DWORD    offset into destination block
  387. Notes:    if source and destination overlap, only forward moves (source base
  388.       less than destination base) are guaranteed to work properly
  389.     if either handle is zero, the corresponding offset is interpreted
  390.       as a real-mode address referring to memory directly addressable
  391.       by the processor
  392.  
  393. Format of XMS handle info [array]:
  394. Offset    Size    Description    (Table 2006)
  395.  00h    BYTE    handle
  396.  01h    BYTE    lock count
  397.  02h    DWORD    handle size
  398.  06h    DWORD    handle physical address (only valid if lock count nonzero)
  399. SeeAlso: #1976
  400. --------m-2F4310-----------------------------
  401. INT 2F - Cloaking - REAL-MODE API
  402.     AX = 4310h
  403. Return: ES:BX -> driver entry point (see #1978,#2007,#2008,#2009,#2010)
  404. SeeAlso: AX=4310h"XMS"
  405.  
  406. (Table 2007)
  407. Call the Cloaking v1.01 "Client Registration" function with:
  408.     AH = 7Eh
  409.     BX = subfunction
  410.         0000h get client registration count
  411.         0001h get client registration structures
  412.         ES:DI -> buffer for registration structures
  413. Return: AX = status
  414.         0000h failed
  415.         0001h successful
  416.         ---subfunction 00h---
  417.         BX = size of client structure in bytes
  418.         CX = number of clients installed
  419.         ---subfunction 01h---
  420.         ES:DI buffer filled
  421. SeeAlso: #2008,#2010,INT 2C/AX=0033h
  422.  
  423. (Table 2008)
  424. Call the Cloaking v1.01 "Verify Cloaking Host" function with:
  425.     AH = 7Fh
  426. Return: AX = status
  427.         0000h failed
  428.         0001h (successful) if installed
  429.         BX = version (0101h for v1.01)
  430.         CX = flags
  431.             bit 0: host is VCPI-based
  432.         DS:DX -> ASCIZ Cloaking host signature
  433.             "CLOAKING.EXE"0, followed by a far-call entry point to
  434.               uninstall host (see #2009) in Helix's CLOAKING.EXE
  435. SeeAlso: #2007,#2010
  436. Index:    installation check;Cloaking host|installation check;CLOAKING.EXE
  437.  
  438. (Table 2009)
  439. Call the CLOAKING.EXE "Uninstall Host" function with:
  440. Return:    AX = 4F4Bh ('OK') if successfully uninstalled protected-mode code
  441.  
  442. (Table 2010)
  443. Call the Cloaking "Start Protected-Mode Client" function with:
  444.     AH = 82h
  445.     DX = XMS handle of locked block containing protected-mode code
  446.     CL = code size (00h 16-bit, else 32-bit)
  447.     ESI, EDI = parameters to pass to protected-mode code
  448. Return: AX = status
  449.         nonzero success
  450.         0000h failed
  451.         BL = error code (A2h,B0h) (see #2004)
  452. Notes:    this function calls a user initialization function at offset 0 in
  453.       the XMS memory block (see #2011)
  454.     supported by Helix's RM386 v6.00 and Helix's CLOAKING.EXE
  455. SeeAlso: #2007,#2008
  456.  
  457. (Table 2011)
  458. Values user initialization function is called with:
  459.     EBX = physical address of block's start
  460.     ESI = user data from function 82h call
  461.     EDI = user data from function 82h call
  462.     CS = code selector for XMS block at EBX (16-bit or 32-bit)
  463.     DS = data selector for XMS block, starting at EBX
  464.     ES = selector for V86 memory access to full real-mode 1088K
  465.     GS = selector for full 4G flat address space
  466.     SS:ESP -> stack provided by host
  467. Return: via 32-bit FAR return
  468. Note:    the initialization function may call any protected-mode Cloaking
  469.       service; it should store the values of DS, ES, and GS for future
  470.       reference
  471. --------m-2F4310-----------------------------
  472. INT 2F - Helix Netroom RM386 v6.00 - XMS EXTENSIONS
  473.     AX = 4310h
  474. Return: ES:BX -> driver entry point (see #2012,#2013,#2014,#2015)
  475. Notes:    HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
  476.     HIMEM.SYS requires at least 256 bytes free stack space when calling
  477.       the driver entry point
  478. SeeAlso: AX=4300h,AX=4310h"XMS",AX=4310h"Cloaking"
  479.  
  480. (Table 2012)
  481. Call the Netroom RM386 v6.00 "Reallocate upper memory block" function with:
  482.     AH = 80h
  483.     DX = segment address of UMB to resize
  484.     BX = new size of block in paragraphs
  485. Return: AX = status
  486.         0001h success
  487.         0000h failure
  488.         BL = error code (80h,B0h,B2h) (see #2004)
  489.         DX = maximum available size
  490. Note:    this function is identical to function 12h
  491. SeeAlso: #1997,#2013
  492.  
  493. (Table 2013)
  494. Call the Netroom RM386 v6.00 "re-enable HMA allocation" function with:
  495.     AH = 81h
  496. Return: AX = 0001h (success)
  497. SeeAlso: #1980,#2012,#2014
  498.  
  499. (Table 2014)
  500. Call the Netroom RM386 v6.00 "Create new UMB entry" function with:
  501.     AH = 83h
  502.     BX = segment of high-memory block
  503.     DX = first page of start of block
  504.     CX = number of consecutive pages in block
  505.     DI = start of UMB in block
  506. Return: AX = 0001h (success)
  507.     DI = segment of first high-DOS block
  508. Note:    the new UMB is not linked into the high-memory chain
  509. SeeAlso: #1995,#2013,#2015
  510.  
  511. (Table 2015)
  512. Call the Netroom RM386 v6.00 "Get all XMS handles info" function with:
  513.     AH = 84h
  514.     CX = size of buffer for handle info
  515.     ES:DI -> buffer for handle info (see #2006)
  516. Return: AX = 0001h (success)
  517.     DX = current number of allocated XMS handles
  518. SeeAlso: #2014,#2000
  519. --------m-2F4310-----------------------------
  520. INT 2F - NEC PC-9800 - XMZ - PRIVATE API
  521.     AX = 4310h
  522. Return: ES:BX -> driver entry point (see #2016,2713)
  523. Program: XMZ is an XMS 2.x-compatible driver for the NEC PC-98 series written
  524.       by ZOBplus Hayami and available at
  525.       ftp:/ftp.tohoku.ac.jp/pub/msdos/Memory/xmz/
  526. SeeAlso: AX=4300h,AX=4310h"XMS"
  527.  
  528. (Table 2016)
  529. Call XMZ v1.02 "Get HMA Information" function with:
  530.     AH = FFh  (XMZ only)
  531.     AL = 01h
  532. Return: AX = 1 on success
  533.     DX = minimum HMA allocation size (/HMAMIN=)
  534.     BX = actual size of HMA allocation, if in use (i.e. the value in DX
  535.           when XMS function 1 was called)
  536. SeeAlso: #2017
  537.  
  538. (Table 2017)
  539. Call XMZ v1.02 "Get EMB Handle Information" function with:
  540.     AH = FFh  (XMZ only)
  541.     AL = 02h
  542. Return: AX = 1 on success
  543.     DX = number of EMB handles configured (/NUMHANDLES=)
  544.     BX = offset in XMZ's segment of the handle table (use segment of
  545.           entry point) (see #2018)
  546. SeeAlso: #2016
  547.  
  548. Format of XMZ v1.02 EMB Handle structure:
  549. Offset    Size    Description    (Table 2018)
  550.  00h    BYTE    flag byte
  551.         04h unused handle slot
  552.         02h in-use handle slot
  553.         01h handle slot that represents a free block
  554.  01h    BYTE    lock count
  555.  02h    WORD    block start address (1K increments)
  556.  04h    WORD    block length (1K increments)
  557. SeeAlso: #2017
  558. --------m-2F4320-----------------------------
  559. INT 2F U - HIMEM.SYS - Mach 20 SUPPORT
  560.     AX = 4320h
  561.     ???
  562. Return: ???
  563. --------m-2F4330-----------------------------
  564. INT 2F CU - HIMEM.SYS v2.77+ - GET EXTERNAL A20 HANDLER ADDRESS
  565.     AX = 4330h
  566. Return: AL = 80h if external A20 handler provided
  567.         ES:BX -> external A20 handler (see #2019)
  568.         CL = A20 detection support
  569.         00h handler is unable to report A20 state
  570.         01h handler supports function 0002h to report A20 state
  571. Note:    HIMEM.SYS calls this function to allow an external program to provide
  572.       an A20 handler (i.e. to support a machine not supported by HIMEM
  573.       itself)
  574. SeeAlso: AX=4308h,AX=4310h
  575.  
  576. (Table 2019)
  577. Call parameters for external A20 handler are:
  578.     AX = function
  579.         0000h disable A20
  580.         0001h enable A20
  581.         0002h get A20 state
  582. Return: AX = status (functions 0000h and 0001h)
  583.         0000h failure
  584.         0001h successful
  585.     AX = A20 state (function 0002h)
  586.         0000h disabled
  587.         0001h enabled
  588. Note:    HIMEM.SYS only calls function 0002h if the returned CL indicated that
  589.       the handler supports the call
  590. ----------2F43D6-----------------------------
  591. INT 2F - Multiplex - ???
  592.     AX = 43D6h
  593. Note:    Central Point's CPBACKUP v9 calls this function with CX=7FFh and
  594.       DX=80D3h at startup
  595. --------E-2F43E0BX0000-----------------------
  596. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - INSTALLATION CHECK
  597.     AX = 43E0h
  598.     BX = 0000h
  599.     CX = 4450h ('DP')
  600.     DX = 4D53h ('MS')
  601. Return: AX = 0000h if installed
  602.         CF clear
  603.         ES:DI -> server structure (see #2020)
  604.         ES:BX -> registration structure (pre-NWDOS 7 beta spec) (see #2022)
  605. Note:    the DPMS 1.0 server included with the original release of Novell DOS
  606.       7.0 supports both the beta and 1.0 specification, setting ES:BX even
  607.       if CX and DX are not as specified on entry (since the beta
  608.       specification did not use those registers).  However, the DPMS 1.1
  609.       server included with the March 1994 update does not support the beta
  610.       specification
  611. SeeAlso: AX=43E1h,AX=43E2h,AX=43E3h,INT 2F/AX=1687h
  612. Index:    signature strings;DPMS
  613.  
  614. Format of DPMS 1.0 server structure:
  615. Offset    Size    Description    (Table 2020)
  616.  00h  4 BYTEs    signature string "DPMS"
  617.  04h  2 BYTEs    DPMS version (major,minor)
  618.  06h  8 BYTEs    blank-padded server OEM name
  619.  0Eh  2 BYTEs    OEM server version (major,minor)
  620.  10h    WORD    DPMS flags (see #2021)
  621.  12h    BYTE    CPU type
  622.         (02h = 286, 03h = 386 or higher, higher values allowed)
  623.  
  624. Bitfields for DPMS flags:
  625. Bit(s)    Description    (Table 2021)
  626.  0    fast processor reset available (286 only)
  627.  1    DPMS server is enabled
  628.  2    memory is remapped
  629.  3-15    reserved (undefined)
  630.  
  631. Format of beta DPMS registration structure:
  632. Offset    Size    Description    (Table 2022)
  633.  00h    DWORD    real-mode API entry point (see #2024)
  634.  04h    DWORD    16-bit protected-mode API entry point (see #2024)
  635.  08h  8 BYTEs    reserved (0)
  636.  10h  8 BYTEs    blank-padded server OEM name
  637.  18h    WORD    flags
  638.         bit 0: fast processor reset available (286 only)
  639.         bits 1-15 reserved (undefined)
  640.  1Ah  2 BYTEs    DPMS version (major,minor)
  641.  1Ch    BYTE    CPU type (02h = 286, 03h = 386 or higher)
  642. --------m-2F43E1-----------------------------
  643. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - REGISTER CLIENT
  644.     AX = 43E1h
  645.     CX = required protected-mode stack size in bytes
  646.     ES:DI -> DPMS client interface structure (see #2023)
  647. Return: AX = 0000h if supported
  648.        CF clear
  649.        ES:DI buffer filled with API entry point code from offset 0Ah
  650. Note:    the client is allowed to copy the returned API code to any location in
  651.       memory, and need not keep the three code fields together
  652. SeeAlso: AX=43E0h,AX=43E2h,AX=43E3h
  653.  
  654. Format of DPMS client interface structure:
  655. Offset    Size    Description    (Table 2023)
  656.  00h    WORD    0000h (structure version / flags)
  657.  02h  8 BYTEs    blank-padded client name
  658.  0Ah  7 BYTEs    real/virtual-86 mode API code (see #2024)
  659.  11h    BYTE    space for return instruction
  660.         set to C3h for near return, CBh for far return
  661.  12h  7 BYTEs    16-bit protected-mode API code (see #2024)
  662.  19h    BYTE    space for return instruction
  663.         set to C3h for near return, CBh for far return
  664.  1Ah  9 BYTEs    32-bit protected-mode API code (see #2024)
  665.  23h    BYTE    space for return instruction
  666.         set to C3h for near return, CBh for far return
  667. Note:    the DPMS server fills the return opcode bytes with zeros and DPMS
  668.       requests will thus crash the system unless the application
  669.       explicitly sets them (some early versions set them to C3h by
  670.       default, but one should not rely on that)
  671.  
  672. (Table 2024)
  673. Call DPMS entry point with:
  674.     AX = 0000h unregister client from server
  675.  ---control transfer functions---
  676.     AX = 0100h call protected-mode procedure
  677.         CX = number of words of stack to copy
  678.         ES:(E)DI -> callup/down register structure (see #2026)
  679.         Return: CF clear if successful
  680.             CF set on error
  681.                 AX = error code (see #2025)
  682.     AX = 0101h call real-mode procedure (RETF return)
  683.         CX = number of words of stack to copy
  684.         ES:(E)DI -> callup/down register structure (see #2026)
  685.         Return: CF clear if successful
  686.             CF set on error
  687.                 AX = error code (see #2025)
  688.     AX = 0102h call real-mode procedure (IRET return)
  689.         CX = number of words of stack to copy
  690.         ES:(E)DI -> callup/down register structure (see #2026)
  691.         Return: CF clear if successful
  692.             CF set on error
  693.                 AX = error code (see #2025)
  694.     AX = 0103h call real-mode interrupt handler
  695.         BL = interrupt number
  696.         CX = number of words of stack to copy
  697.         ES:(E)DI -> callup/down register structure (see #2026)
  698.         Return: CF clear if successful
  699.             CF set on error
  700.                 AX = error code (see #2025)
  701.     AX = 0104h register default protected mode procedure
  702.         ES:(E)DI -> default register structure (see #2027)
  703.         Return: CF clear if successful
  704.             CF set on error
  705.                 AX = error code (see #2025)
  706.     AX = 0105h register default real-mode procedure (RETF return)
  707.         ES:(E)DI -> default register structure (see #2027)
  708.         Return: CF clear if successful
  709.             CF set on error
  710.                 AX = error code (see #2025)
  711.         Note:    the procedure will be called from 16-bit prot. mode
  712.     AX = 0106h register default real-mode procedure (IRET return)
  713.         ES:(E)DI -> default register structure (see #2027)
  714.         Return: CF clear if successful
  715.             CF set on error
  716.                 AX = error code (see #2025)
  717.         Note:    the procedure will be called from 16-bit prot. mode
  718.     AX = 0107h register default real-mode interrupt handler
  719.         BL = interrupt number
  720.         ES:(E)DI -> default register structure (see #2027)
  721.         Return: CF clear if successful
  722.             CF set on error
  723.                 AX = error code (see #2025)
  724.         Note:    the handler will be called from 16-bit protected mode
  725.     AX = 0108h register default real-mode procedure (RETF return)
  726.         ES:(E)DI -> default register structure (see #2027)
  727.         Return: CF clear if successful
  728.             CF set on error
  729.                 AX = error code (see #2025)
  730.         Note:    the procedure will be called from 32-bit prot. mode
  731.     AX = 0109h register default real-mode procedure (IRET return)
  732.         ES:(E)DI -> default register structure (see #2027)
  733.         Return: CF clear if successful
  734.             CF set on error
  735.                 AX = error code (see #2025)
  736.         Note:    the procedure will be called from 32-bit prot. mode
  737.     AX = 010Ah register default real-mode interrupt handler
  738.         BL = interrupt number
  739.         ES:(E)DI -> default register structure (see #2027)
  740.         Return: CF clear if successful
  741.             CF set on error
  742.                 AX = error code (see #2025)
  743.         Note:    the handler will be called from 32-bit protected mode
  744.  ---descriptor management---
  745.     AX = 0200h allocate descriptors
  746.         CX = number of descriptors to allocate
  747.         Return: CF clear if successful
  748.                 AX = selector for first descriptor allocated
  749.             CF set on error
  750.                 AX = error code (see #2025)
  751.     AX = 0201h free a descriptor
  752.         BX = selector for descriptor
  753.         Return: CF clear if successful
  754.             CF set on error
  755.                 AX = error code (see #2025)
  756.     AX = 0202h create alias descriptor
  757.         BX = selector for descriptor to be aliased
  758.         Return: CF clear if successful
  759.                 AX = alias descriptor
  760.             CF set on error
  761.                 AX = error code (see #2025)
  762.     AX = 0203h build alias to real-mode segment
  763.         BX = descriptor
  764.         CX = real-mode segment
  765.         Return: CF clear if successful
  766.             CF set on error
  767.                 AX = error code (see #2025)
  768.     AX = 0204h set descriptor base
  769.         BX = descriptor
  770.         CX:DX = base address
  771.         Return: CF clear if successful
  772.             CF set on error
  773.                 AX = error code (see #2025)
  774.     AX = 0205h set descriptor limit
  775.         BX = descriptor
  776.         CX = limit
  777.         Return: CF clear if successful
  778.             CF set on error
  779.                 AX = error code (see #2025)
  780.     AX = 0206h set descriptor type/attribute
  781.         BX = descriptor
  782.         CL = type
  783.         CH = attribute
  784.         Return: CF clear if successful
  785.             CF set on error
  786.                 AX = error code (see #2025)
  787.     AX = 0207h get descriptor base
  788.         BX = descriptor
  789.         Return: CF clear if successful
  790.                 CX:DX = base address
  791.             CF set on error
  792.                 AX = error code (see #2025)
  793.  ---linear memory functions---
  794.     AX = 0300h get size of largest free block of memory
  795.         Return: CF clear if successful
  796.                 BX:CX = size
  797.             CF set on error
  798.                 AX = error code (see #2025)
  799.     AX = 0301h allocate block of extended memory
  800.         BX:CX = required size
  801.         Return: CF clear if successful
  802.                 BX:CX = base address
  803.                 SI:DI = handle
  804.             CF set on error
  805.                 AX = error code (see #2025)
  806.     AX = 0302h free block of extended memory
  807.         SI:DI = handle
  808.         Return: CF clear if successful
  809.             CF set on error
  810.                 AX = error code (see #2025)
  811.     AX = 0303h map linear memory
  812.         ES:(E)DI -> DDS (see #2028)
  813.         Return: CF clear if successful
  814.                 BX:CX = base address
  815.                 SI:DI = handle
  816.             CF set on error
  817.                 AX = error code (see #2025)
  818.     AX = 0304h unmap linear memory
  819.         SI:DI = handle
  820.         Return: CF clear if successful
  821.             CF set on error
  822.                 AX = error code (see #2025)
  823.     AX = 0305h get page table entries
  824.         ESI = linear address
  825.         (E)CX = count
  826.         ES:(E)DI -> buffer for page table entries
  827.         Return: CF clear if successful
  828.                 ES:(E)DI buffer filled
  829.             CF set on error
  830.                 AX = error code (see #2025)
  831.     AX = 0306h set page table entries
  832.         EBX = linear memory handle
  833.         ESI = linear address
  834.         (E)CX = count
  835.         ES:(E)DI -> buffer containing page table entries
  836.         Return: CF clear if successful
  837.             CF set on error
  838.                 AX = error code (see #2025)
  839.     AX = 0307h get largest mappable block size
  840.         Return: CF clear if successful
  841.                 BX:CX = size
  842.             CF set on error
  843.                 AX = error code (see #2025)
  844.  ---miscellaneous---
  845.     AX = 0400h relocate segment to extended memory
  846.         ES:SI = base address
  847.         CX = limit
  848.         BL = type
  849.         BH = attribute
  850.         DX = selector or 0000h
  851.         Return: CF clear if successful
  852.                 AX = selector
  853.                 BX:CX = new base address
  854.                 SI:DI = handle
  855.             CF set on error
  856.                 AX = error code (see #2025)
  857. Note:    the beta DPMS specification, which is still supported by the Novell
  858.       DOS 7.0 DPMS host, only supported functions 0100h-0103h, 0200h-0207h,
  859.       0300h-0304h, and 0400h
  860.  
  861. (Table 2025)
  862. Values for DPMS error code:
  863.  8000h    general error
  864.  8001h    unsupported function
  865.  8002h    unable to switch to protected mode
  866.  8004h    no default stack defined
  867.  8005h    unknown client
  868.  8010h    resource unavailable
  869.  8011h    descriptor unavailable
  870.  8012h    linear memory unavailable
  871.  8013h    physical memory unavailable
  872.  8021h    invalid value
  873.  8022h    invalid selector
  874.  8023h    invalid handle
  875.  8025h    invalid linear address
  876.  
  877. Format of DPMS callup/down register structure:
  878. Offset    Size    Description    (Table 2026)
  879.  00h    DWORD    EDI
  880.  04h    DWORD    ESI
  881.  08h    DWORD    EBP
  882.  0Ch  4 BYTEs    reserved (0) (ESP, may be used by DPMS server)
  883.  10h    DWORD    EBX
  884.  14h    DWORD    EDX
  885.  18h    DWORD    ECX
  886.  20h    DWORD    EAX
  887.  24h    DWORD    EIP
  888.  28h    WORD    CS
  889.  2Ah  2 BYTEs    reserved (0)
  890.  2Ch    DWORD    EFLAGS
  891.  30h    DWORD    ESP
  892.  34h    WORD    SS
  893.  36h  2 BYTEs    reserved (0)
  894.  38h    WORD    ES
  895.  3Ah  2 BYTEs    reserved (0)
  896.  3Ch    WORD    DS
  897.  3Eh  2 BYTEs    reserved (0)
  898.  40h    WORD    FS
  899.  42h  2 BYTEs    reserved (0)
  900.  44h    WORD    GS
  901.  46h  2 BYTEs    reserved (0)
  902.  
  903. Format of DPMS default register structure:
  904. Offset    Size    Description    (Table 2027)
  905.  00h    DWORD    EIP
  906.  04h    WORD    CS
  907.  06h  2 BYTEs    reserved (0)
  908.  08h    WORD    number of words to copy from stack to stack
  909.  0Ah    BYTE    (call) 00h
  910.         (ret) nonzero if call could not be made
  911.  0Bh    BYTE    reserved (may be used by some servers)
  912.  0Ch    DWORD    ESP
  913.  10h    WORD    SS
  914.  12h  2 BYTEs    reserved (0)
  915.  14h    WORD    ES
  916.  16h  2 BYTEs    reserved (0)
  917.  18h    WORD    DS
  918.  1Ah  2 BYTEs    reserved (0)
  919.  1Ch    WORD    FS
  920.  1Eh  2 BYTEs    reserved (0)
  921.  20h    WORD    GS
  922.  22h  2 BYTEs    reserved (0)
  923.  24h  9 BYTEs    API entry code (filled in by server)
  924.  
  925. Format of DPMS lock DDS:
  926. Offset    Size    Description    (Table 2028)
  927.  00h    DWORD    total size in bytes
  928.  04h    DWORD    offset
  929.  08h    WORD    segment or selector
  930.  0Ah    WORD    reserved
  931.  0Ch    WORD    maximum number of physical blocks structure has space for
  932.  0Eh    WORD    number of physical blocks listed
  933.  10h    DWORD    physical address of first block
  934.  14h    DWORD    size in bytes of first block
  935.     ...
  936. --------m-2F43E2-----------------------------
  937. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - ENABLE/DISABLE DPMS
  938.     AX = 43E2h
  939.     BX = new state (0000h disable, 0001h enable)
  940. Return: AX = 0000h if supported
  941. Note:    this function should normally be called only by system software
  942. SeeAlso: AX=43E0h,AX=43E1h,AX=43E3h
  943. --------m-2F43E3BX0000-----------------------
  944. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - DPMS STARTUP BROADCAST
  945.     AX = 43E3h
  946.     BX = 0000h
  947.     CX = 4450h ('DP')
  948.     DX = 4D53h ('MS')
  949. SeeAlso: AX=43E0h,AX=43E4h
  950. --------m-2F43E4BX0000-----------------------
  951. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - DPMS EXIT BROADCAST
  952.     AX = 43E4h
  953.     BX = 0000h
  954.     CX = 4450h ('DP')
  955.     DX = 4D53h ('MS')
  956. SeeAlso: AX=43E0h,AX=43E3h
  957. --------E-2F44-------------------------------
  958. INT 2F U - DOS Extender support???
  959.     AH = 44h
  960.     AL = function (at least 0Bh, 15h, 17h)
  961.     ???
  962. Return: ???
  963. Note:    called by Codeview for Windows
  964. SeeAlso: AH=86h
  965. --------G-2F4500-----------------------------
  966. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - INSTALLATION CHECK
  967.     AX = 4500h
  968. Return: AL = installation status
  969.         01h if PROF.COM installed
  970.         02h if VPROD.386 installed
  971. SeeAlso: AX=4501h,AX=4502h
  972. --------G-2F4501-----------------------------
  973. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SETUP PROFILER
  974.     AX = 4501h
  975.     BX = CSIPS buffer size in KB (first parameter for ProfSetup)
  976.     CX = output limit in KB (second parameter for ProfSetup)
  977. Note:    this call is not supported by PROF.COM
  978. SeeAlso: AX=4502h,AX=4503h
  979. --------G-2F4502-----------------------------
  980. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SET SAMPLING RATE
  981.     AX = 4502h
  982.     BL = sampling rate for PROF.COM (0 < BL <= 13)
  983.         (01h = 8192/s, 04h = 1024/s, 08h = 32/s, 0Dh = 1/s)
  984.     CX = sampling rate for VPROD.386
  985. Note:    for PROF.COM, this programs the CMOS clock by setting BL+2 as the
  986.       low four bits of CMOS register 0Ah.  The interruption rate is
  987.       1 SHL (15 - BL) per second.
  988. SeeAlso: AX=4501h,AX=4503h
  989. --------G-2F4503-----------------------------
  990. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - START PROFILING
  991.     AX = 4503h
  992. Notes:    Profiling is also turned on by the key combinations
  993.       LeftShift + RightShift + Alt and LeftShift + RightShift + Ctrl
  994.     for PROF.COM, this call programs the CMOS clock by reading register
  995.       0Ch, and setting bit 6 of register 0Bh.  It then makes sure that IRQ8
  996.       is unmasked
  997. SeeAlso: AX=4504h
  998. --------G-2F4504-----------------------------
  999. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - STOP PROFILING
  1000.     AX = 4504h
  1001. Notes:    profiling is also turned off by the key combination
  1002.       LeftShift + RightShift
  1003.     for PROF.COM, this programs the CMOS clock by reading register 0Ch
  1004.       and clearing bit 6 of register 0Bh.  It then masks IRQ8.
  1005. SeeAlso: AX=4503h,AX=4505h,AX=4506h,AX=4507h
  1006. --------G-2F4505-----------------------------
  1007. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - CLEAR PROFILING DATA
  1008.     AX = 4505h
  1009. SeeAlso: AX=4503h,AX=4504h,AX=4506h
  1010. --------G-2F4506-----------------------------
  1011. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFlush"
  1012.     AX = 4506h
  1013. SeeAlso: AX=4505h,AX=4507h
  1014. --------G-2F4507-----------------------------
  1015. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFinish"
  1016.     AX = 4507h
  1017. Note:    this call is essentially a "ProfStop" (AX=4504h) followed by
  1018.       "ProfFlush" (AX=4506h)
  1019. SeeAlso: AX=4504h,AX=4505h,AX=4506h
  1020. --------G-2F4508-----------------------------
  1021. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - ALTERNATE SEGDEBUG IFACE
  1022.     AX = 4508h
  1023.     BX = ordinal (or 0000h)
  1024.     CX = segment
  1025.     DX = instance (or 0000h)
  1026.     SI = type (or 0000h)
  1027.     ES:DI -> ASCIZ module name
  1028. Notes:    this call is an alternate entry to the profiler's SEGDEBUG
  1029.       interface, but only to function 0, for notifying the profiler of
  1030.       each new segment loaded.  The SHOWHITS utility then examines the
  1031.       profiler's output files (CSIPS.DAT and SEGENTRY.DAT) in conjunction
  1032.       with symbol files to provide information in a useful form.
  1033.     this call does not have a corresponding Windows function
  1034. SeeAlso: AX=4500h
  1035. --------D-2F4601-----------------------------
  1036. INT 2F CU - MS Windows WINOLDAP - SWITCHING ???
  1037.     AX = 4601h
  1038. Return: ???
  1039. Note:    the DOS 5+ kernel intercepts this function and copies the MCB
  1040.        following the caller's PSP memory block into the DOS data segment;
  1041.        in conjunction with AX=4602h, this intercept is used by DOS to
  1042.        avoid corruption of the Windows real-mode heap's end sentinel
  1043. SeeAlso: AX=1700h,AX=4602h
  1044. --------D-2F4602-----------------------------
  1045. INT 2F CU - MS Windows WINOLDAP - SWITCHING ???
  1046.     AX = 4602h
  1047. Return: ???
  1048. Note:    the DOS 5+ kernel intercepts this function and copies the
  1049.       previously-saved MCB from the DOS data segment into the MCB following
  1050.       the caller's PSP memory block; in conjunction with AX=4601h, this
  1051.       intercept is used by DOS to avoid corruption of the Windows real-mode
  1052.       heap's end sentinel
  1053. SeeAlso: AX=1700h,AX=4601h
  1054. --------E-2F46-------------------------------
  1055. INT 2F U - Windows/286 DOS Extender
  1056.     AH = 46h
  1057.     AL = subfunction (03h,04h)
  1058. Return: ???
  1059. Note:    these two subfunctions are called by MS Windows 3.0
  1060. --------v-2F4653CX0002-----------------------
  1061. INT 2F - F-PROT v1.x only - F-LOCK.EXE - API
  1062.     AX = 4653h ('FS')
  1063.     CX = 0002h
  1064.     BX = subfunction
  1065.         0000h  installation check
  1066.         Return: AX = FFFFh
  1067.         0001h  uninstall
  1068.         Return: AX,BX,ES destroyed
  1069.         0002h  disable (v1.08 and below only)
  1070.         0003h  enable (v1.08 and below only)
  1071. Program: F-LOCK is part of the shareware F-PROT virus/trojan protection
  1072.       package by Fridrik Skulason
  1073. SeeAlso: AX=4653h/CX=0003h,AX=CA00h,INT 21/AX=4BEEh
  1074. Index:    installation check;F-LOCK|uninstall;F-LOCK
  1075. --------v-2F4653CX0003-----------------------
  1076. INT 2F - F-PROT v1.x only - F-XCHK.EXE - API
  1077.     AX = 4653h ('FS')
  1078.     CX = 0003h
  1079.     BX = subfunction
  1080.         0000h  installation check
  1081.         Return: AX = FFFFh
  1082.         0001h  uninstall
  1083.         Return: AX,BX,ES destroyed
  1084. Program: F-XCHK is part of the shareware F-PROT virus/trojan protection
  1085.       package by Fridrik Skulason
  1086. SeeAlso: AX=4653h/CX=0002h,AX=4653h/CX=0004h,AX=CA00h
  1087. Index:    installation check;F-XCHK|uninstall;F-XCHK
  1088. --------v-2F4653CX0004-----------------------
  1089. INT 2F - F-PROT v1.x only - F-POPUP.EXE - API
  1090.     AX = 4653h ('FS')
  1091.     CX = 0004h
  1092.     BX = subfunction
  1093.         0000h  installation check
  1094.         Return: AX = FFFFh
  1095.         0001h  uninstall
  1096.         Return: AX,BX,ES destroyed
  1097.         0002h  disable (v1.08 and below only)
  1098.            display message (v1.14+)
  1099.             other registers: ???
  1100.         0003h  enable (v1.08 and below only)
  1101.            display message (v1.14+)
  1102.             other registers: ???
  1103.             Return: AX = key pressed by user
  1104. Program: F-POPUP is part of the shareware F-PROT virus/trojan protection
  1105.       package by Fridrik Skulason
  1106. SeeAlso: AX=4653h/CX=0003h,AX=4653h/CX=0005h,AX=CA00h
  1107. Index:    installation check;F-POPUP|uninstall;F-POPUP
  1108. --------v-2F4653CX0005-----------------------
  1109. INT 2F - F-PROT v1.x only - F-DLOCK.EXE - API
  1110.     AX = 4653h ('FS')
  1111.     CX = 0005h
  1112.     BX = subfunction
  1113.         0000h installation check
  1114.         Return: AX = FFFFh
  1115.         0001h uninstall
  1116.         Return: AX,BX,ES destroyed
  1117. Program: F-DLOCK is part of the shareware F-PROT virus/trojan protection
  1118.       package by Fridrik Skulason
  1119. SeeAlso: AX=4653h/CX=0004h,AX=CA00h
  1120. Index:    installation check;F-DLOCK|uninstall;F-DLOCK
  1121. ----------2F4653CX0007-----------------------
  1122. INT 2F - F-PROT v2.x - VIRSTOP - ENABLE/DISABLE BOOTSECTOR READ CHECKING
  1123.     AX = 4653h ('FS')
  1124.     CX = 0007h
  1125.     BL = new state of bootsector checking (01h = disabled)
  1126. Program: VIRSTOP is the resident virus-checker from Fridrik Skulason's F-PROT
  1127.       virus/trojan protection package
  1128. ----------2F4653CX0008-----------------------
  1129. INT 2F - F-PROT v2.x - ???
  1130.     AX = 4653h ('FS')
  1131.     CX = 0008h
  1132.     ???
  1133. Return: ???
  1134. Note:    called by F-PROT v2.x VIRSTOP
  1135. ----------2F4653CX0008-----------------------
  1136. INT 2F - F-PROT v2.x - VIRSTOP - INSTALLATION CHECK
  1137.     AX = 4653h ('FS')
  1138.     CX = 0008h
  1139. Return: AX = 5346h if installed
  1140.         BX = version???
  1141.         DS:SI -> ASCIZ name of file containing virus signatures
  1142.         DS:DI -> 80-byte buffer for ???
  1143. --------W-2F4680-----------------------------
  1144. INT 2F U - MS Windows v3.0 - INSTALLATION CHECK
  1145.     AX = 4680h
  1146. Return: AX = result
  1147.         0000h MS Windows 3.0 running in real (/R) or standard (/S) mode,
  1148.           or DOS 5 DOSSHELL active
  1149.         nonzero  no Windows, Windows prior to 3.0, or Windows3 in enhanced
  1150.           mode
  1151. Note:    Windows 3.1 finally provides an installation check which works in all
  1152.       modes (see AX=160Ah)
  1153. SeeAlso: AX=1600h,AX=160Ah
  1154. ----------2F47-------------------------------
  1155. INT 2F U - ???
  1156.     AH = 47h
  1157.     ???
  1158. Return: ???
  1159. Note:    reportedly called by Microsoft BASIC Compiler v7.0
  1160. --------K-2F4800-----------------------------
  1161. INT 2F - DOS 5+ DOSKEY - INSTALLATION CHECK
  1162.     AX = 4800h
  1163. Return: AL = nonzero if installed (DOS 5.0 and 6.0 return AX=AA02h)
  1164.         ES = segment of DOSKEY resident portion
  1165. Note:    DOSKEY chains if AL is not 00h or 10h on entry
  1166. SeeAlso: AX=4800h"PCED",AX=4810h
  1167. --------K-2F4800-----------------------------
  1168. INT 2F - PCED v2.1 - INSTALLATION CHECK
  1169.     AX = 4800h
  1170. Return: AX = AACDh if installed
  1171.         ES = segment of PCED kernel (PCED has multiple code segments)
  1172. Program: PCED v2.1 is a command line editor/history/macro facility by
  1173.       Cove Software.  It is the commercial version of the freeware CED.
  1174. Notes:    DOSKEY also responds to this call if installed, returning AX=AA02h.
  1175.     unlike DOSKEY, PCED does *not* chain if AL contains an
  1176.       unsupported function code.  It IRETs with all registers intact.
  1177. --------K-2F4810-----------------------------
  1178. INT 2F - DOS 5+ DOSKEY, PCED v2.1 - READ INPUT LINE FROM CONSOLE
  1179.     AX = 4810h
  1180.     DS:DX -> line buffer (see #0661 at INT 21/AH=0Ah)
  1181. Return: AX = 0000h if successful
  1182. Notes:    the first byte (length) of the buffer MUST be 80h, or DOSKEY chains to
  1183.       the previous handler; PCED allows sizes other than 80h
  1184.     if the user's input is a macro name, no text is placed in the buffer
  1185.       even though AX=0000h on return; the program must immediately issue
  1186.       this call again to retrieve the expansion of the macro.  Similarly,
  1187.       if the user enters a special parameter such as $*, this call must
  1188.       be repeated to retrieve the expansion; on the second call, DOSKEY
  1189.       overwrites the macro name on the screen with its expansion.
  1190.     unlike DOSKEY, PCED expands all macros on the first call, so it is
  1191.       not necessary to make two calls; since the buffer is not empty on
  1192.       return, DOSKEY-aware programs will not make the second call
  1193.     DOSKEY chains if AL is not 00h or 10h on entry
  1194. SeeAlso: AX=4800h,INT 21/AH=0Ah
  1195. --------K-2F48C0-----------------------------
  1196. INT 2F - PCED v2.1 - PCED API
  1197.     AX = 48C0h
  1198.     DX = API function code
  1199.     other registers as required by the specified function
  1200. Return: CF clear if successful
  1201.     CF set on error
  1202.         AX = PCED error code
  1203.     other registers as appropriate for API function
  1204. Program: PCED v2.1 is a command line editor/history/macro facility by
  1205.       Cove Software.  It is the commercial version of the freeware CED.
  1206. Note:    the full API information is available from Cove Software
  1207. SeeAlso: AX=4800h"PCED",AX=48C1h,AX=48C2h,AX=48C3h
  1208. --------U-2F48C1BL00-------------------------
  1209. INT 2F - PCED/VSTACK - INSTALLATION CHECK
  1210.     AX = 48C1h
  1211.     BL = 00h
  1212. Return: AX = 0000h if installed
  1213.         BX = VSTACK resident segment
  1214. Program: VSTACK is a resident backscroll utility included as part of the PCED
  1215.       package by Cove Software
  1216. Note:    chains if BL <> 00h on entry
  1217. SeeAlso: AX=48C0h,AX=48C2h
  1218. --------U-2F48C2BL00-------------------------
  1219. INT 2F - PCED/ATTRIB - INSTALLATION CHECK
  1220.     AX = 48C2h
  1221.     BL = 00h
  1222. Return: AX = 0000h if installed
  1223.         BX = ATTRIB resident segment
  1224. Program: ATTRIB is a resident file attribute changer included as part of the
  1225.       PCED package by Cove Software
  1226. Note:    chains if BL <> 00h on entry
  1227. SeeAlso: AX=48C0h,AX=48C1h,AX=48C3h
  1228. --------K-2F48C3BL00-------------------------
  1229. INT 2F - PCED/KEYDEF - INSTALLATION CHECK
  1230.     AX = 48C3h
  1231.     BL = 00h
  1232. Return: AX = 0000h if installed
  1233.         BX = KEYDEF resident segment
  1234. Program: KEYDEF is a resident keyboard redefinition utility included as part
  1235.       of the PCED package by Cove Software
  1236. Note:    chains if BL <> 00h on entry
  1237. SeeAlso: AX=48C0h,AX=48C2h,AX=48C4h
  1238. --------U-2F48C4BL00-------------------------
  1239. INT 2F - PCED/FLIST - INSTALLATION CHECK
  1240.     AX = 48C4h
  1241.     BL = 00h
  1242. Return: AX = 0000h if installed
  1243.         BX = FLIST resident segment
  1244. Program: FLIST is a resident filelist processor included as part of the PCED
  1245.       package by Cove Software
  1246. Note:    chains if BL <> 00h on entry
  1247. SeeAlso: AX=48C0h,AX=48C3h,AX=48C5h
  1248. --------U-2F48C5BL00-------------------------
  1249. INT 2F - PCED/ASSOC - INSTALLATION CHECK
  1250.     AX = 48C5h
  1251.     BL = 00h
  1252. Return: AX = 0000h if installed
  1253.         BX = ASSOC resident segment
  1254. Program: ASSOC is a resident utility included as part of the PCED package which
  1255.       associated files with executable programs based on their extensions
  1256. Note:    chains if BL > 02h on entry
  1257. SeeAlso: AX=48C0h,AX=48C4h,AX=48C5h/BL=01h,AX=48C5h/BL=02h
  1258. --------U-2F48C5BL01-------------------------
  1259. INT 2F - PCED/ASSOC - GET VERSION
  1260.     AX = 48C5h
  1261.     BL = 01h
  1262. Return: AX = 0000h if installed
  1263.         BX = binary ASSOC version (BL = major, BH = minor)
  1264. Note:    chains if BL > 02h on entry
  1265. SeeAlso: AX=48C0h,AX=48C5h/BL=00h,AX=48C5h/BL=02h
  1266. --------U-2F48C5BL02-------------------------
  1267. INT 2F - PCED/ASSOC - ASSOCIATION TEST
  1268.     AX = 48C5h
  1269.     BL = 02h
  1270.     DS:SI -> ASCIZ filename
  1271. Return: AX = status
  1272.         0000h if filename is unknown
  1273.         0001h if there is an association defined for the file
  1274.     BX destroyed
  1275. Program: ASSOC is a resident utility included as part of the PCED package which
  1276.       associated files with executable programs based on their extensions
  1277. Note:    chains if BL > 02h on entry
  1278. SeeAlso: AX=48C0h,AX=48C5h/BL=00h,AX=48C5h/BL=01h
  1279. ----------2F49-------------------------------
  1280. INT 2F U - ???
  1281.     AH = 49h
  1282.     ???
  1283. Return: ???
  1284. Note:    reportedly called by DOS 5.0 installation
  1285. --------D-2F4A00CX0000-----------------------
  1286. INT 2F CU - DOS 5+ - FLOPPY-DISK LOGICAL DRIVE CHANGE NOTIFICATION
  1287.     AX = 4A00h
  1288.     CX = 0000h
  1289.     DH = new drive number
  1290.     DL = current drive number
  1291. Return: CX = FFFFh to skip "Insert diskette for drive X:" message
  1292. Note:    called by MS-DOS 5.0+ IO.SYS just before displaying the message
  1293.       "Insert diskette for drive X:" on single-floppy systems
  1294. --------D-2F4A01-----------------------------
  1295. INT 2F - DOS 5+ - QUERY FREE HMA SPACE
  1296.     AX = 4A01h
  1297. Return: BX = number of bytes available in HMA (0000h if DOS not using HMA)
  1298.     ES:DI -> start of available HMA area (FFFFh:FFFFh if not using HMA)
  1299. Notes:    called by Windows 3.1 DOSX.EXE
  1300.     supported by Novell DOS 7
  1301. SeeAlso: AX=4310h,AX=4A02h
  1302. --------D-2F4A02-----------------------------
  1303. INT 2F - DOS 5+ - ALLOCATE HMA SPACE
  1304.     AX = 4A02h
  1305.     BX = number of bytes
  1306. Return: ES:DI -> start of allocated HMA block or FFFFh:FFFFh
  1307.     BX = number of bytes actually allocated (rounded up to next paragraph
  1308.           for DOS 5.0 and 6.0)
  1309. Notes:    this call is not valid unless DOS is loaded in the HMA (DOS=HIGH)
  1310.     called by Windows 3.1 DOSX.EXE
  1311.     supported by Novell DOS 7
  1312. SeeAlso: AX=4A01h
  1313. --------T-2F4A05-----------------------------
  1314. INT 2F U - DOS 5+ DOSSHELL - TASK SWITCHING API???
  1315.     AX = 4A05h
  1316.     SI = function
  1317.         0000h reset???
  1318.         0001h ???
  1319.         ES:BP -> 80-byte buffer containing ???
  1320.         0002h ???
  1321.         0003h ???
  1322.         0004h ???
  1323.         BL = ???
  1324.         0005h ???
  1325.         0006h get ???
  1326.         Return: ES:SI -> ???
  1327.         0007h get ???
  1328.         Return: AX = ???
  1329.         0008h get ???
  1330.         Return: DX:AX -> ??? (internal control data of some kind)
  1331.         0009h get ???
  1332.         Return: ES:SI -> ??? (apparently identical to function 0006h)
  1333.         000Ah ???
  1334.         BL = length of buffer
  1335.         ES:BP -> buffer containing ???
  1336.         000Bh get ???
  1337.         Return: AX = ???
  1338.         000Ch ???
  1339.         BL = ???
  1340.         Return: if BL nonzero on entry
  1341.                 DX:AX -> ???
  1342.             if BL = 00h on entry
  1343.                 ES:SI -> ???
  1344. Notes:    DOSSHELL chains to the previous handler if SI is not one of the values
  1345.       listed above
  1346.     the DOSSWAP.EXE module calls functions 03h,04h,05h,07h,08h,09h,0Ch
  1347.     the Windows 3.1 DSWAP.EXE and WSWAP.EXE task switchers use these calls
  1348. SeeAlso: AX=4B01h
  1349. --------D-2F4A06-----------------------------
  1350. INT 2F CU - DOS 5+ - DOS SUPERVISOR "REBOOT PANEL" - ADJUST MEMORY SIZE
  1351.     AX = 4A06h
  1352.     DX = segment following last byte of conventional memory
  1353. Return: DX = segment following last byte of memory available for use by DOS
  1354. Desc:    used to override the default memory size when booting diskless
  1355.       workstations
  1356. Notes:    called by MS-DOS 5+ IO.SYS startup code if the signature "RPL" is
  1357.       present three bytes beyond the INT 2F handler; this call overrides
  1358.       the value returned by INT 12
  1359.     hooked by RPL code at the top of memory to protect itself from being
  1360.       overwritten; DOS builds a memory block with owner = 0008h and name
  1361.       "RPL" which must be freed by the RPL code when it is done
  1362. SeeAlso: INT 12,INT 18
  1363. --------N-2F4A07-----------------------------
  1364. INT 2F U - RESERVED FOR PROTMAN SUPPORT
  1365.     AX = 4A07h
  1366.     ???
  1367. Return: ???
  1368. --------c-2F4A10BX0000-----------------------
  1369. INT 2F - SMARTDRV v4.00+ - INSTALLATION CHECK AND HIT RATIOS
  1370.     AX = 4A10h
  1371.     BX = 0000h
  1372.     CX = EBABh (v4.1+; see Note)
  1373. Return: AX = BABEh if installed
  1374.         DX:BX = cache hits
  1375.         DI:SI = cache misses
  1376.         CX = number of dirty cache elements
  1377.         BP = version in BCD (4.10 = 0410h)
  1378. Notes:    most of the SMARTDRV API, including this call, is supported by
  1379.       PC-Cache v8.0 and recent versions of the Norton Caches
  1380.     if DBLSPACE.BIN is installed but SMARTDRV has not yet been installed,
  1381.       then calls of this function with CX<>EBABh on entry cause
  1382.       DBLSPACE.BIN to display the error message
  1383.       "Cannot run SMARTDrive 4.0 with DoubleSpace" and abort the caller
  1384.       with INT 21/AX=4C00h
  1385.     SMARTDRV v3.x had a completely different API using IOCTL calls, which
  1386.       was also supported by the Norton Caches
  1387. SeeAlso: AX=4A10h/BX=0001h,AX=4A10h/BX=0004h,AX=4A10h/BX=0005h
  1388. SeeAlso: AX=4A10h/BX=0007h,AX=4A10h/BX=1234h,AX=4A11h/BX=0000h
  1389. SeeAlso: INT 21/AX=4402h"SMARTDRV",INT 21/AX=4403h"SMARTDRV"
  1390. --------c-2F4A10BX0000-----------------------
  1391. INT 2F U - Novell NWCACHE - ???
  1392.     AX = 4A10h
  1393.     BX = 0000h
  1394.     CX = 0EDCh ('EDC' = Novell European Development Center)
  1395. Return: ???
  1396. SeeAlso: AX=4A10h/BX=0001h"NWCACHE"
  1397. --------c-2F4A10BX0001-----------------------
  1398. INT 2F - SMARTDRV v4.00+ - FLUSH BUFFERS (COMMIT CACHE)
  1399.     AX = 4A10h
  1400.     BX = 0001h
  1401. Note:    this function is also supported by PC-Cache v8.0.
  1402. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0002h
  1403. --------c-2F4A10BX0001-----------------------
  1404. INT 2F U - Novell NWCACHE - ???
  1405.     AX = 4A10h
  1406.     BX = 0001h
  1407.     CX = 0EDCh ('EDC' = Novell European Development Center)
  1408. Return: ???
  1409. SeeAlso: AX=4A10h/BX=0000h"NWCACHE"
  1410. --------c-2F4A10BX0002-----------------------
  1411. INT 2F - SMARTDRV v4.00+ - RESET CACHE
  1412.     AX = 4A10h
  1413.     BX = 0002h
  1414. Note:    this function is also supported by PC-Cache v8.0.
  1415. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0001h
  1416. --------c-2F4A10BX0003-----------------------
  1417. INT 2F - SMARTDRV v4.00+ - STATUS
  1418.     AX = 4A10h
  1419.     BX = 0003h
  1420.     BP = drive number (0=A, 1=B, etc.)
  1421.     DL = subfunction
  1422.         00h only get information
  1423.         01h turn on read cache
  1424.         02h turn off read cache
  1425.         03h turn on write cache
  1426.         04h turn off write cache
  1427.         ---NWCACHE---
  1428.         05h ???
  1429.         06h ???
  1430. Return: AX = BABEh if OK
  1431.     DL = status (see #2029)
  1432.     DL = FFh if drive does not exist
  1433. Notes:    If the read cache is off, reads will not be cached, but writes will
  1434.       continue to be cached if the write-cache is enabled.
  1435.     this function is also supported by PC-Cache v8.0.
  1436. SeeAlso: AX=4A10h/BX=0000h
  1437.  
  1438. Bitfields for SMARTDRV status:
  1439. Bit(s)    Description    (Table 2029)
  1440.  7    not cached
  1441.  6    write-through (not write-cached)
  1442.  0-5    real drive number (0=A, 1=B...)
  1443. --------c-2F4A10BX0004-----------------------
  1444. INT 2F - SMARTDRV v4.00+ - GET CACHE SIZE
  1445.     AX = 4A10h
  1446.     BX = 0004h
  1447. Return: AX = size in elements of full-sized cache
  1448.     BX = current size in elements
  1449.     CX = size of one element in bytes
  1450.     DX = number of elements under Windows
  1451. Note:    this function is also supported by PC-Cache v8.0.
  1452. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0003h,AX=4A10h/BX=0005h
  1453. --------c-2F4A10BX0005-----------------------
  1454. INT 2F - SMARTDRV v4.00+ - GET DOUBLE-BUFFER STATUS
  1455.     AX = 4A10h
  1456.     BX = 0005h
  1457.     BP = drive number (0=A, 1=B...)
  1458. Return: AX = BABEh if double-buffered
  1459.         ES:DI -> 16-byte array of status bytes for fixed disks (see #2030)
  1460. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0003h,AX=4A10h/BX=0006h
  1461.  
  1462. (Table 2030)
  1463. Values for SMARTDRV status byte:
  1464.  00h    state unknown
  1465.  FFh    drive double-buffered
  1466.  else    not double-buffered
  1467. --------c-2F4A10BX0006-----------------------
  1468. INT 2F CU - SMARTDRV v4.00+ - CHECK IF DRIVE CACHEABLE
  1469.     AX = 4A10h
  1470.     BX = 0006h
  1471.     CL = drive number (01h = A:)
  1472. Return: AX = 0006h if drive should not be cached by SMARTDRV
  1473. Note:    called by SMARTDRV at startup to determine whether it should cache
  1474.       a particular drive
  1475. SeeAlso: AX=4A10h/BX=0000h
  1476. --------c-2F4A10BX0007-----------------------
  1477. INT 2F - SMARTDRV v4.00+ - GET DEVICE DRIVER FOR DRIVE
  1478.     AX = 4A10h
  1479.     BX = 0007h
  1480.     BP = drive number (00h=A:)
  1481. Return: DL = unit number within device driver
  1482.     ES:DI -> device driver header for drive (see #0953)
  1483. Note:    this function is also supported by PC-Cache v8.0.
  1484.     this call is reported to always return the driver header of the
  1485.       standard block driver (A:-C:+) for SmartDrive v5.00 from MS-DOS 6.2
  1486. SeeAlso: AX=4A10h/BX=0000h,AX=4A11h/BX=0003h,AX=4A11h/BX=0004h
  1487. --------c-2F4A10BX0008-----------------------
  1488. INT 2F - SMARTDRV v4.20+ - GET/SET FLUSH BEFORE PROMPT, CD-ROM SUPPORT
  1489.     AX = 4A10h
  1490.     BX = 0008h
  1491.     DL = subfunction
  1492.         00h set
  1493.         DH = new states
  1494.             bit 0: flush before prompt
  1495.             bits 1-7 reserved (0)
  1496.         01h get
  1497.         Return: DH = status flags
  1498.                 bit 0: (v4.2+) flush before prompt
  1499.                 bit 1: (v5.0+) CD-ROM caching support installed
  1500. Note:    v4.2 was an interim release to fix problems in the SMARTDRV included
  1501.       with MS-DOS 6.00; v5.00 is included with MS-DOS 6.2
  1502. --------c-2F4A10BX000A-----------------------
  1503. INT 2F - SMARTDRV v4.00+ - GET ELEMENT STATUS TABLE
  1504.     AX = 4A10h
  1505.     BX = 000Ah
  1506. Return: ES:BX -> information pointer table (see #2031)
  1507. Note:    this function is also supported by PC-Cache v8.0.
  1508. SeeAlso: AX=4A10h/BX=0000h
  1509.  
  1510. Format of SMARTDRV information pointer table:
  1511. Offset    Size    Description    (Table 2031)
  1512.  00h    WORD    offset of ??? byte/word array (byte if elements < 2000h bytes)
  1513.  02h    WORD    offset of dirty flag byte/word array (byte if elts < 2000h)
  1514.         each byte/word is a bit string of the dirty sectors in element
  1515.  04h    WORD    offset of word array containing low halves of unique
  1516.           identifiers for the corresponding element's contents
  1517.  06h    WORD    offset of word array containing high halves of unique
  1518.           identifiers for the corresponding element's contents
  1519.  08h    WORD    offset of WORD containing current number of elements in cache
  1520. --------c-2F4A10BX1234-----------------------
  1521. INT 2F - SMARTDRV v4.00+ - SIGNAL SERIOUS ERROR
  1522.     AX = 4A10h
  1523.     BX = 1234h
  1524. Desc:    this function pops up a message box saying that a serious error
  1525.       occurred and to hit R to retry, then waits for the keypress
  1526. Note:    this function is also supported by PC-Cache v8.0.
  1527. SeeAlso: AX=4A10h/BX=0000h
  1528. --------k-2F4A11BX0000-----------------------
  1529. INT 2F - DBLSPACE.BIN - "GetVersion" - INSTALLATION CHECK
  1530.     AX = 4A11h
  1531.     BX = 0000h
  1532. Return: AX = 0000h (successful)
  1533.     BX = 444Dh ("DM")
  1534.     CL = first drive letter used by DBLSPACE (41h ['A'] = A:)
  1535.     CH = number of drive letters used by DBLSPACE
  1536.     DX = internal DBLSPACE.BIN version number (bits 14-0)
  1537.         bit 15 set if DBLSPACE.BIN has not yet been relocated to final
  1538.           position in memory (i.e. DBLSPACE.SYS /MOVE)
  1539. Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
  1540.       disk-compression software bundled with MS-DOS 6.0 and 6.20
  1541. Notes:    this function is also supported by the version of SuperStor bundled
  1542.       with IBM DOS 6.x and "preloading" versions of Stacker
  1543.     the complete DBLSPACE.BIN API is still supported by MS-DOS 6.22's
  1544.       DRVSPACE.BIN
  1545. SeeAlso: AX=4A11h/BX=0001h,AX=4A11h/BX=0002h,AX=4A11h/BX=0003h
  1546. SeeAlso: AX=4A11h/BX=0005h,AX=4A11h/BX=0007h,AX=4A11h/BX=FFFFh
  1547. SeeAlso: INT 21/AX=4404h"DBLSPACE"
  1548. --------k-2F4A11BX0001-----------------------
  1549. INT 2F - DBLSPACE.BIN - "GetDriveMapping" - GET DRIVE MAPPING
  1550.     AX = 4A11h
  1551.     BX = 0001h
  1552.     DL = drive number (0=A:)
  1553. Return: AX = status (see also #2032)
  1554.         0000h successful
  1555.         if DL was compressed drive,
  1556.             BL = host drive (bit 7 set if drive is compressed)
  1557.         else if DL was host drive,
  1558.             BL = compressed drive
  1559.         else
  1560.             BL = specified drive (if available for DoubleSpace)
  1561.         BH = DoubleSpace sequence number
  1562.         other error code (0101h) (see #2032)
  1563.         apparently never returned for the MS-DOS 6.2 DoubleSpace
  1564. Note:    the compressed volume file for the specified compressed drive is
  1565.       host:\DBLSPACE.sequence
  1566. SeeAlso: AX=4A11h/BX=0000h
  1567.  
  1568. (Table 2032)
  1569. Values for DBLSPACE function status:
  1570.  0000h    successful
  1571.  0100h    bad function
  1572.  0101h    invalid drive
  1573.  0102h    not a compressed drive
  1574.  0103h    drive already swapped
  1575.  0104h    drive not swapped
  1576. --------k-2F4A11BX0002-----------------------
  1577. INT 2F - DBLSPACE.BIN - "Swap Drive" - SWAP DRIVE LETTERS OF CVF AND HOST DRIVE
  1578.     AX = 4A11h
  1579.     BX = 0002h
  1580.     DL = drive number (0=A:) of compressed drive to swap with its host
  1581. Return: AX = status (0000h,0101h,0102h,0103h) (see #2032)
  1582. Note:    this function is intended for use by DBLSPACE.EXE only
  1583. SeeAlso: AX=4A11h/BX=0000h
  1584. --------k-2F4A11BX0003-----------------------
  1585. INT 2F - DBLSPACE.BIN - "DSGetEntryPoints" - GET DEVICE DRIVER ENTRY POINTS
  1586.     AX = 4A11h
  1587.     BX = 0003h
  1588.     CL = drive number (0=A:) of compressed drive
  1589. Return: CL = FFh on error (not compressed drive)
  1590.     CL <> FFh driver unit number of host drive
  1591.         ES:SI -> device driver's strategy routine
  1592.         ES:DI -> device driver's interrupt routine
  1593.     BX destroyed
  1594. Note:    in conjunction with subfunction 0004h, this call allows disk caches
  1595.       like SMARTDRV to apply a device driver wrapper to DoubleSpaced
  1596.       drives just like SMARTDRV applies to regular block devices
  1597. SeeAlso: AX=4A10h/BX=0007h,AX=4A11h/BX=0000h,AX=4A11h/BX=0004h
  1598. --------k-2F4A11BX0004-----------------------
  1599. INT 2F - DBLSPACE.BIN - "DSSetEntryPoints" - SET DEVICE DRIVER ENTRY POINTS
  1600.     AX = 4A11h
  1601.     BX = 0004h
  1602.     CL = drive number (0=A:) of compressed drive
  1603.     DL = unit number for new driver entry points
  1604.     DH = 00h
  1605.     ES:SI -> device driver strategy routine to call for drive
  1606.     ES:DI -> device driver interrupt routine to call for drive
  1607. Return: CL = FFh on error (not a compressed drive)
  1608.     BX destroyed
  1609. Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
  1610.       disk-compression software bundled with MS-DOS 6.0
  1611. Note:    in conjunction with subfunction 0003h, this call allows disk caches
  1612.       like SMARTDRV to apply a device driver wrapper to DoubleSpaced
  1613.       drives just like SMARTDRV applies to regular block devices
  1614. SeeAlso: AX=4A10h/BX=0007h,AX=4A11h/BX=0000h,AX=4A11h/BX=0003h
  1615. --------k-2F4A11BX0005-----------------------
  1616. INT 2F - DBLSPACE.BIN - "ActivateDrive" - MOUNT COMPRESSED DRIVE
  1617.     AX = 4A11h
  1618.     BX = 0005h
  1619.     DL = drive number (0=A:) to assign to new drive
  1620.     ES:SI -> activation record (see #2033)
  1621. Return: status returned in activation record (see #2034)
  1622. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0006h
  1623.  
  1624. Format of DBLSPACE activation record:
  1625. Offset    Size    Description    (Table 2033)
  1626.  00h  2 BYTEs    signature "MD" (4Dh 44h)
  1627.  02h    BYTE    4Dh ('M') mount command
  1628.  03h    BYTE    error code (set to FFh before calling) (see #2034)
  1629.  04h    BYTE    host drive number (0=A:)
  1630.  05h    ???    DISK_UNIT structure (not documented)
  1631.  
  1632. (Table 2034)
  1633. Values for DBLSPACE Mount error code:
  1634.  00h    successful
  1635.  01h    drive letter not available for DoubleSpace
  1636.  02h    drive letter already in use
  1637.  03h    no more disk units (increase MaxRemovableDrives in .INI)
  1638.  09h    CVF too fragmented
  1639. --------k-2F4A11BX0006-----------------------
  1640. INT 2F - DBLSPACE.BIN - "DeactivateDrive" - UNMOUNT COMPRESSED DRIVE
  1641.     AX = 4A11h
  1642.     BX = 0006h
  1643.     DL = drive number (0=A:) to unmount
  1644. Return: AX = status (0000h,0102h) (see #2032)
  1645. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0005h
  1646. --------k-2F4A11BX0007-----------------------
  1647. INT 2F - DBLSPACE.BIN - "GetDriveSpace" - GET SPACE AVAIL ON COMPRESSED DRIVE
  1648.     AX = 4A11h
  1649.     BX = 0007h
  1650.     DL = compressed drive number (0=A:)
  1651. Return: AX = status (0000h,0102h) (see also #2032)
  1652.         0000h successful
  1653.         DS:SI -> free space record (see #2035)
  1654. Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
  1655.       disk-compression software bundled with MS-DOS 6.0
  1656. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0008h
  1657.  
  1658. Format of DBLSPACE free space record:
  1659. Offset    Size    Description    (Table 2035)
  1660.  00h    DWORD    total number of sectors in drive's sector heap
  1661.  04h    DWORD    number of free sectors in drive's sector heap
  1662. --------k-2F4A11BX0008-----------------------
  1663. INT 2F - DBLSPACE.BIN - "GetFileFragmentSpace" - GET SIZE OF FRAGMENT HEAP
  1664.     AX = 4A11h
  1665.     BX = 0008h
  1666.     DL = compressed drive number (0=A:)
  1667. Return: AX = status (0000h,0102h) (see also #2032)
  1668.         0000h successful
  1669.         BX = maximum entries in File Fragment heap
  1670.         CX = available entries in File Fragment heap
  1671. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0007h,AX=4A11h/BX=0009h
  1672. --------k-2F4A11BX0009-----------------------
  1673. INT 2F - DBLSPACE.BIN - "GetExtraInfo" - DETERMINE NUMBER OF DISK_UNIT STRUCTS
  1674.     AX = 4A11h
  1675.     BX = 0009h
  1676.     DL = compressed drive number (0=A:)
  1677. Return: AX = status (see also #2032)
  1678.         0000h successful
  1679.         CL = number of DISK_UNIT structures allocated
  1680.               (see AX=4A11h/BX=0005h)
  1681.         CH = DoubleGuard enabled-checks bitflags in bits 6-0 (DOS 6.2)
  1682. Note:    the DoubleGuard checks are enabled or disabled as a block by the
  1683.       DoubleGuard= line in DBLSPACE.INI; they may be individually set with
  1684.       the CheckSum= line.
  1685. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0008h
  1686. --------k-2F4A11BX000A-----------------------
  1687. INT 2F - DBLSPACE.BIN v6.2 - SET AUTOMOUNT DRIVES
  1688.     AX = 4A11h
  1689.     BX = 000Ah
  1690.     CX:DX = bitmask of drives on which to enable AutoMount
  1691.         (DX bit 0 = A:, CX bit 0 = P:, etc.)
  1692. Return: AX = 0000h if supported
  1693.         CX:DX = old mask or 0000h:0000h on error
  1694.     BX destroyed
  1695. SeeAlso: AX=4A11h/BX=000Bh
  1696. --------k-2F4A11BX000B-----------------------
  1697. INT 2F - DBLSPACE.BIN v6.2 - GET AUTOMOUNT DRIVES
  1698.     AX = 4A11h
  1699.     BX = 000Bh
  1700. Return: AX = 0000h if supported
  1701.         CX:DX = mask of drives with AutoMount enabled
  1702.         0000h:0000h on error
  1703.     BX destroyed
  1704. SeeAlso: AX=4A11h/BX=000Ah
  1705. --------k-2F4A11BXFFFE-----------------------
  1706. INT 2F U - DBLSPACE.BIN - RELOCATE
  1707.     AX = 4A11h
  1708.     BX = FFFEh
  1709.     ES = segment to which to relocate DBLSPACE.BIN
  1710. Return: ???
  1711. Notes:    called by DBLSPACE.SYS to relocate DBLSPACE.BIN to its final position
  1712.       in memory
  1713.     this function also unhooks and discards the code providing this
  1714.       function and AX=4A11h/BX=FFFFh
  1715.     this function is also supported by the version of SuperStor bundled
  1716.       with IBM DOS 6.x and "preloading" versions of Stacker
  1717. SeeAlso: AX=4A11h/BX=FFFFh
  1718. --------k-2F4A11BXFFFF-----------------------
  1719. INT 2F U - DBLSPACE.BIN - GET RELOCATION SIZE
  1720.     AX = 4A11h
  1721.     BX = FFFFh
  1722. Return: AX = number of paragraphs needed by DBLSPACE.BIN
  1723. Note:    used by DBLSPACE.SYS to relocate the DBLSPACE driver to its final
  1724.       position in memory
  1725.     this function is also supported by the version of SuperStor bundled
  1726.       with IBM DOS 6.x and "preloading" versions of Stacker
  1727. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=FFFEh
  1728. --------k-2F4A12CX4D52-----------------------
  1729. INT 2F - Microsoft Realtime Compression Interface (MRCI) - RAM-BASED SERVER
  1730.     AX = 4A12h
  1731.     CX = 4D52h ("MR")
  1732.     DX = 4349h ("CI")
  1733. Return: CX = 4943h ("IC") if installed
  1734.     DX = 524Dh ("RM") if installed
  1735.         ES:DI -> MRCINFO structure (see #0590 at INT 1A/AX=B001h)
  1736. Note:    this call is functionally identical to INT 1A/AX=B001h, but should be
  1737.       called first, as the latter call is used for the first, ROM-based
  1738.       MRCI server, while this call is used for RAM-based servers which
  1739.       may be partially or entirely replacing a prior server
  1740. SeeAlso: AX=4A12h/CX=5354h,INT 1A/AX=B001h
  1741. --------k-2F4A12CX5354-----------------------
  1742. INT 2F - Stacker 4 LZS Compression Interface (LZSAPI)
  1743.     AX = 4A12h
  1744.     CX = 5354h ("ST")
  1745.     DX = 4143h ("AC")
  1746. Return: AX = 4F4Bh ("OK") if installed
  1747.     CX = 7374h ("st") if installed
  1748.     DX = 6163h ("ac") if installed
  1749.         ES:DI -> entry point in LZSAPI server (usually, driver
  1750.               STACKER.COM) containing far address of an actual
  1751.               LZSINFO structure (see #2036)
  1752. SeeAlso: AX=4A12h/CX=4D52h,INT 25/AX=CDCDh
  1753.  
  1754. Format of LZSINFO structure:
  1755. Offset    Size    Description    (Table 2036)
  1756.  00h  6 BYTEs    signature "LZSAPI"
  1757.  06h    WORD    server version (200 (0C8h) for Stacker 4 and Stacker Anywhere)
  1758.  08h  4 BYTEs    vendor signature
  1759.         "STAC" = Stac Electronics, Inc.
  1760.  0Ch  6 BYTEs    ???
  1761.  12h    WORD    bit flags: server status/capabilities (see #2037)
  1762.  14h    DWORD    -> Stacker 3.X-compatible compression procedure
  1763.  18h    DWORD    -> Stacker 3.X-compatible decompression procedure
  1764.  1Ch  4 BYTEs    reserved (always set to 0)
  1765.  20h    DWORD    -> incremental Stacker 3.x-compatible compression procedure
  1766.           (see #2038)
  1767.  24h  4 BYTEs    ???
  1768.  28h    DWORD    -> incremental Stacker 3.x-compatible decompression procedure
  1769.           (see #2039)
  1770.  2Ch  4    BYTES    ???
  1771.  30h    DWORD    -> new (Stacker 4) compression procedure
  1772.  34h  4 BYTEs    ???
  1773.  38h    DWORD    -> new (Stacker 4) decompression procedure
  1774. Notes:    Stacker 4 usally keeps two different data-compression algorithms in
  1775.       memory (preferably in XMA):
  1776.         1) new (Stacker 4) data compression algorithm (4K LZ77 with hashing
  1777.           and static Huffman encoding), and
  1778.         2) old (Stacker 3.x-compatible) one (2K LZ77 with hashing), which
  1779.           is used to work with STACVOL files created under older
  1780.           versions of Stacker.
  1781.  
  1782. Bitfields for LZSAPI capabilities:
  1783. Bit(s)    Description    (Table 2037)
  1784.  0    ???
  1785.  1    busy/error flag
  1786.  2-10    ???
  1787.  11    maximum compressor/decompressor presented
  1788.  
  1789. (Table 2038)
  1790. Call Stacker 3.x-style non-incremental functions with:
  1791.     STACK:    DWORD    return address for compress/decompress procedure
  1792.         WORD    compression algorithm parameters (see #2040)
  1793.         WORD    size of destination buffer (in bytes)
  1794.         DWORD    address of destination buffer
  1795.         WORD    size of source buffer (in bytes)
  1796.         DWORD    address of source buffer
  1797. Return: (compression/decompression procedure)
  1798.     AX = size of resulting data in destination buffer
  1799.         0000h if error (either destination buffer too small or error in
  1800.           compressed data)
  1801.  
  1802. (Table 2039)
  1803. Call Stacker 4-style incremental procedures with:
  1804.     STACK:    DWORD    return address for compr./decompr. procedure
  1805.         DWORD    address of LZSSWAP structure (see #2041)
  1806.             if 0000:0000, procedure uses non-incremental technique
  1807.         WORD    compression algorithm parameters (see #2040)
  1808.         WORD    size of destination buffer (in bytes)
  1809.         DWORD    address of destination buffer
  1810.         WORD    size of source buffer (in bytes)
  1811.         DWORD    address of source buffer
  1812.  
  1813. (Table 2040)
  1814. Values for Compression algorithm parameters:
  1815. Value    Compression level (/P=xx parameter)
  1816.  07F9h      1
  1817.  0621h      2
  1818.  0625h      3
  1819.  0665h      4
  1820.  0669h      5
  1821.  06E9h      6
  1822.  06EDh      7
  1823.  07D1h      8
  1824.  07D9h      9
  1825.  
  1826. Format of LZSSWAP structure:
  1827. Offset    Size    Description    (Table 2041)
  1828.  00h  2 BYTEs    signature "CS"
  1829.  02h  6 BYTEs    reserved
  1830.  08h    DWORD    address of destination buffer swapping procedure
  1831.  0Ch    DWORD    address of stack swapping procedure
  1832. --------k-2F4A13-----------------------------
  1833. INT 2F U - DBLSPACE.BIN - GET ??? ENTRY POINTS
  1834.     AX = 4A13h
  1835. Return: AX = 134Ah if supported
  1836.         ES:BX -> entry point record (see #2042)
  1837. SeeAlso: AX=4A11h/BX=0000h
  1838.  
  1839. Format of DBLSPACE entry point record:
  1840. Offset    Size    Description    (Table 2042)
  1841.  00h    DWORD    pointer to FAR function for ???
  1842.  04h  5 BYTEs    FAR JUMP instruction to ???
  1843. ----------2F4A15BX0000-----------------------
  1844. INT 2F - MS EMM386.EXE v4.46+ - INSTALL I/O VIRTUALIZATION HANDLER
  1845.     AX = 4A15h
  1846.     BX = 0000h (function number)
  1847.     DX = starting I/O address
  1848.     EDX high word = ending I/O address
  1849.     CX = number of ports to trap
  1850.     DS:SI -> I/O dispatch table (see #3220)
  1851.     DI = size of client's code and data
  1852. Return: CF clear if successful
  1853.     CF set on error
  1854. Notes:    this interface is only available in virtual-86 mode; the I/O handlers
  1855.       will be called in protected mode
  1856.     only ports 0100h-FFFFh may be trapped; EMM386 reserved ports 0000h-
  1857.       00FFh
  1858.  
  1859. Format of EMM386 I/O dispatch table [array]:
  1860. Offset    Size    Description    (Table 3220)
  1861.  00h    WORD    I/O port offset (added to DX to get actual port number)
  1862.  02h    WORD    offset of I/O handler for port (see #3221)
  1863.  
  1864. (Table 3221)
  1865. Values EMM386 I/O dispatch function is called with:
  1866.     CX = Ring0 code selector for I/O handler's segment
  1867.     DS = Ring0 data selector for I/O handler's segment (alias of CS)
  1868.     EDX = faulting I/O address
  1869.     ECX = direction (00000008h for byte output, 00000000h for byte input)
  1870.     EAX = data in/out
  1871. Return: (via FAR RET)
  1872.     CF clear if I/O access successfully virtualized
  1873.     CF set if access not virtualized (default handler will be called to
  1874.           perform the I/O)
  1875. SeeAlso: #3220
  1876. --------D-2F4A33-----------------------------
  1877. INT 2F - Windows95 - CHECK MS-DOS VERSION 7
  1878.     AX = 4A33h
  1879. Return: AX = 0000h for MS-DOS 7.00+
  1880.         BX,DX,SI,DS may be destroyed
  1881.     AX nonzero if MS-DOS 6- or other DOS
  1882. SeeAlso: INT 21/AH=30h
  1883. --------N-2F4B-------------------------------
  1884. INT 2F - LAN Manager 2.0 DOS Enh NETWKSTA.EXE - NETWORK WORKSTATION REDIRECTOR
  1885.     AH = 4Bh
  1886.     ???
  1887. Return: ???
  1888. Note:    LAN Manager enhanced mode adds features beyond the standard redirector
  1889.       file/printer services
  1890. SeeAlso: AX=118Ah,AX=4100h,AH=42h
  1891. --------T-2F4B01-----------------------------
  1892. INT 2F C - DOS 5+ TASK SWITCHER - BUILD CALLOUT CHAIN
  1893.     AX = 4B01h
  1894.     CX:DX -> task switcher entry point (see #2045)
  1895.     ES:BX = 0000h:0000h
  1896. Return: ES:BX -> callback info structure (see #2043) or 0000h:0000h
  1897. Notes:    called by the task switcher
  1898.     this function is hooked by clients which require notification of task
  1899.       switcher activities; the call must first be passed on to the prior
  1900.       handler with registers unchanged using a simulated interrupt.     On
  1901.       return, the client must build a callback info structure and store
  1902.       the returned ES:BX in the "next" field, then return the address of
  1903.       its own callback info structure.
  1904.     a client program must add itself to the notification chain if it
  1905.       provides services to other programs; before terminating, it must
  1906.       remove itself from the chain by calling the task switcher's entry
  1907.       point with AX=0005h (see #2045)
  1908.     the task switcher entry point should not be saved, as it is subject to
  1909.       change and will be provided on any notification call
  1910.     the Windows 3.1 Standard Mode supports this API
  1911. SeeAlso: AX=160Bh,AX=4B02h
  1912.  
  1913. Format of task switcher callback info structure:
  1914. Offset    Size    Description    (Table 2043)
  1915.  00h    DWORD    pointer to next callback info structure
  1916.  04h    DWORD    pointer to notification function (see #2044)
  1917.  08h    DWORD    reserved
  1918.  0Ch    DWORD    address of zero-terminated list of API info structures
  1919.         (see #2047)
  1920.  
  1921. (Table 2044)
  1922. Values task switcher notification function is called with:
  1923.     AX = function
  1924.         0000h switcher initialization
  1925.         Return: AX = status
  1926.                 0000h if OK to load
  1927.                 nonzero to abort task switcher
  1928.         0001h query suspend
  1929.         BX = session ID
  1930.         Return: AX = status
  1931.                 0000h if OK to switch session
  1932.                 0001h if not
  1933.         0002h suspend session
  1934.         BX = session ID
  1935.         interrupts disabled
  1936.         Return: AX = 0000h if OK to switch session
  1937.                = 0001h if not
  1938.         0003h activate session
  1939.         BX = session ID
  1940.         CX = session status flags
  1941.             bit 0: set if first activation of session
  1942.             bits 1-15: reserved (0)
  1943.         interrupts disabled
  1944.         Return: AX = 0000h
  1945.         0004h session active
  1946.         BX = session ID
  1947.         CX = session status flags
  1948.             bit 0: set if first activation of session
  1949.             bits 1-15: reserved (0)
  1950.         Return: AX = 0000h
  1951.         0005h create session
  1952.         BX = session ID
  1953.         Return: AX = 0000h if OK to create session
  1954.                = 0001h if not
  1955.         0006h destroy session
  1956.         BX = session ID
  1957.         Return: AX = 0000h
  1958.         0007h switcher termination
  1959.         BX = flags
  1960.             bit 0: set if calling switcher is only switcher loaded
  1961.             bits 1-15: reserved (0)
  1962.         Return: AX = 0000h
  1963.     ES:DI -> task switcher entry point (see #2045)
  1964. Notes:    function 0000h is generally called by the program which controls or
  1965.       invokes the task switcher, rather than by the task switcher itself;
  1966.       the entry point supplied to this function is not necessarily the
  1967.       entry point to the task switcher itself, and may be 0000h:0000h.  If
  1968.       any client indicates that loading is not possible, all clients will
  1969.       be called with function 0007h; thus it is possible for a client to
  1970.       receive a termination notice without a corresponding initialization
  1971.       notice.
  1972.     except for functions 0002h and 0003h, the notification handler is
  1973.       called with interrupts enabled and may make any INT 21h function
  1974.       call; interrupts must not be enabled in functions 0002h and 0003h
  1975.     function 0007h may be called with ES:DI = 0000h:0000h if the entry
  1976.       point is no longer valid
  1977. --------T-2F4B02BX0000-----------------------
  1978. INT 2F - DOS 5+ TASK SWITCHER - INSTALLATION CHECK
  1979.     AX = 4B02h
  1980.     BX = 0000h
  1981.     ES:DI = 0000h:0000h
  1982. Return: ES:DI = 0000h:0000h if task switcher not loaded
  1983.     ES:DI -> task switcher entry point (see #2045) if loaded
  1984.         AX = 0000h
  1985. Notes:    the returned entry point is that for the most-recently loaded task
  1986.       switcher; the entry points for prior task switchers may be determined
  1987.       with the "get version" call (see #2045)
  1988.     this function is supported by PC Tools v8+ CPTASK
  1989. SeeAlso: AX=4A05h,AX=4B03h
  1990.  
  1991. (Table 2045)
  1992. Call task switcher entry point with:
  1993.     AX = 0000h get version
  1994.         Return: CF clear if successful
  1995.                 AX = 0000h
  1996.                 ES:BX -> task switcher version struct (see #2046)
  1997.             CF set if unsupported function
  1998.     AX = 0001h test memory region
  1999.         ES:DI -> first byte to be tested
  2000.         CX = size of region to test
  2001.         Return: CF clear if successful
  2002.                 AX = memory type of tested region
  2003.                 0000h global
  2004.                 0001h global and local
  2005.                 0002h local (replaced on session switch)
  2006.             CF set if unsupported function
  2007.     AX = 0002h suspend switcher
  2008.         ES:DI -> new task switcher's entry point
  2009.         Return: CF clear if successful
  2010.                 AX = state
  2011.                 0000h switcher has been suspended
  2012.                 0001h switcher not suspended, new switcher must
  2013.                     abort
  2014.                 0002h switcher not suspended, but new switcher
  2015.                     may run anyway
  2016.             CF set if unsupported function
  2017.     AX = 0003h resume switcher
  2018.         ES:DI -> new task switcher's entry point
  2019.         Return: CF clear if successful
  2020.                 AX = 0000h
  2021.             CF set if unsupported function
  2022.     AX = 0004h hook notification chain
  2023.         ES:DI -> callback info structure to be added to chain
  2024.               (see #2043)
  2025.         Return: CF clear if successful
  2026.                 AX = 0000h
  2027.             CF set if unsupported function
  2028.     AX = 0005h unhook notification chain
  2029.         ES:DI -> callback info structure to be removed from chain
  2030.               (see #2043)
  2031.         Return: CF clear if successful
  2032.                 AX = 0000h
  2033.             CF set if unsupported function
  2034.     AX = 0006h query API support
  2035.         BX = asynchronous API identifier
  2036.         Return: CF clear if successful
  2037.                 AX = 0000h
  2038.                 ES:BX -> API info structure (see #2047) for the
  2039.                       client which provides the highest
  2040.                       level of API support
  2041.             CF set if unsupported function
  2042.  
  2043. Format of task switcher version structure:
  2044. Offset    Size    Description    (Table 2046)
  2045.  00h    WORD    major version of supported protocol  (current protocol is 1.0)
  2046.  02h    WORD    minor version of supported protocol
  2047.  04h    WORD    major version of task switcher
  2048.  06h    WORD    minor version of task switcher
  2049.  08h    WORD    task switcher ID (see AX=4B03h)
  2050.  0Ah    WORD    operation flags
  2051.         bit 0: set if task switcher disabled
  2052.         bits 1-15: reserved (0)
  2053.  0Ch    DWORD    pointer to ASCIZ task switcher name
  2054.         ("MS-DOS Shell Task Switcher" for DOSSHELL task switcher)
  2055.  10h    DWORD    pointer to previous task switcher's entry point or 0000h:0000h
  2056.  
  2057. Format of API info structure:
  2058. Offset    Size    Description    (Table 2047)
  2059.  00h    WORD    size of structure in bytes (000Ah)
  2060.  02h    WORD    API identifier
  2061.         0001h NetBIOS
  2062.         0002h 802.2
  2063.         0003h TCP/IP
  2064.         0004h LAN Manager named pipes
  2065.         0005h Novell NetWare IPX
  2066.  04h    WORD    major version \ of highest version of API for which the support
  2067.  06h    WORD    minor version / level specified in the next field is provided
  2068.  08h    WORD    support level
  2069.         0001h minimal support
  2070.         0002h API-level support
  2071.         0003h switcher compatibility
  2072.         0004h seamless compatibility
  2073. --------T-2F4B03-----------------------------
  2074. INT 2F - DOS 5+ TASK SWITCHER - ALLOCATE SWITCHER ID
  2075.     AX = 4B03h
  2076.     ES:DI -> task switcher entry point (see #2045)
  2077. Return: AX = 0000h
  2078.     BX = switcher ID (0001h-000Fh), or 0000h if no more available
  2079. Notes:    if a task switcher has determined that it is the first to be loaded, it
  2080.       must allocate an identifier for itself and provide this function to
  2081.       all subsequent task switchers; if it is not the first to be loaded,
  2082.       it must call this function to allocate an ID.     The switcher ID is
  2083.       used as the high four bits of all session identifiers to ensure
  2084.       unique session IDs.
  2085.     if no more switcher IDs are available, the new task switcher making the
  2086.       call must terminate or disable itself
  2087.     the task switcher providing the identifiers may call the new task
  2088.       switcher's entry point as needed
  2089.     this call is available from within DOSSHELL even if the task switcher
  2090.       is not installed
  2091.     this function is supported by PC Tools v8+ CPTASK, but appears to
  2092.       always return an ID of 0000h
  2093. SeeAlso: AX=4B02h,AX=4B04h
  2094. --------T-2F4B04-----------------------------
  2095. INT 2F - DOS 5+ TASK SWITCHER - FREE SWITCHER ID
  2096.     AX = 4B04h
  2097.     BX = switcher ID
  2098.     ES:DI -> task switcher entry point (see #2045)
  2099. Return: AX = 0000h
  2100.     BX = status
  2101.         0000h successful
  2102.         other error (invalid ID or ID not allocated)
  2103. Notes:    called by a task switcher when it exits, unless it was the first loaded
  2104.       and is providing the support for AX=4B03h and AX=4B04h
  2105.     the task switcher providing the identifiers may call the terminating
  2106.       task switcher's entry point as needed
  2107.     this call is available from within DOSSHELL even if the task switcher
  2108.       is not installed
  2109.     this call is supported by PC Tools v8+ CPTASK, but appears to return
  2110.       sucessfully no matter which ID is given
  2111. SeeAlso: AX=4B02h,AX=4B03h
  2112. --------T-2F4B05-----------------------------
  2113. INT 2F C - DOS 5+ TASK SWITCHER - IDENTIFY INSTANCE DATA
  2114.     AX = 4B05h
  2115.     ES:BX = 0000h:0000h
  2116.     CX:DX -> task switcher entry point (see #2045)
  2117. Return: ES:BX -> startup info structure (see #2048) or 0000h:0000h
  2118. Notes:    called by task switcher
  2119.     clients with instance data should hook this call, pass it through to
  2120.       the previous handler with unchanged registers using a simulated
  2121.       interrupt.  On return, the client should create a startup info
  2122.       structure (see #2048), store the returned ES:BX in the "next"
  2123.       field, and return the address of the created structure in ES:BX
  2124.     all MS-DOS function calls are available from within this call
  2125. SeeAlso: AX=1605h,AX=160Bh,AX=4B02h
  2126.  
  2127. Format of task switcher startup info structure:
  2128. Offset    Size    Description    (Table 2048)
  2129.  00h  2 BYTEs    major, minor version of info structure (03h,00h)
  2130.  02h    DWORD    pointer to next startup info structure or 0000h:0000h
  2131.  06h    DWORD    0000h:0000h (ignored)
  2132.  0Ah    DWORD    ignored
  2133.  0Eh    DWORD    pointer to instance data records (see #2049)
  2134.  
  2135. Format of one instance data record in array:
  2136. Offset    Size    Description    (Table 2049)
  2137.  00h    DWORD    address of instance data (end of array if 0000h:0000h)
  2138.  04h    WORD    size of instance data
  2139. --------W-2F4B06-----------------------------
  2140. INT 2F - MS Windows - WIN.COM - GET ??? POINTER TO WIN.COM
  2141.     AX = 4B06h
  2142. Return:    AX = 0000h
  2143.     ES:BX -> ??? function in WIN.COM
  2144. Note:    the entry point is called with
  2145.         AX = 0001h or 0003h
  2146.         BX = ???
  2147. SeeAlso: AX=4B80h
  2148. --------W-2F4B20-----------------------------
  2149. INT 2F - MS Windows 3 - WIN.COM - SET PROGRAM TO EXECUTE ON EXIT
  2150.     AX = 4B20h
  2151. Return: AX = 0000h if successful
  2152.         DX:CX -> 256-byte buffer for pathname and commandline (see #2050)
  2153. Note:    when the Windows function ExitWindows is called with an exit code of
  2154.       44h, WIN.COM executes the program specified in the returned buffer
  2155.       and then restarts Windows
  2156.  
  2157. Format of WIN.COM buffer:
  2158. Offset    Size    Description    (Table 2050)
  2159.  00h 128 BYTEs    ASCIZ pathname of program to execute
  2160.  80h 128 BYTEs    commandline for program
  2161. --------W-2F4B80-----------------------------
  2162. INT 2F - MS Windows - WSWAP.EXE - RESET INTERNAL VARIABLES
  2163.     AX = 4B80h
  2164. Return: nothing
  2165. Note:    called by WINOLDAP.MOD
  2166. SeeAlso: AX=4B06h
  2167. --------p-2F4C-------------------------------
  2168. INT 2F U - Advanced Power Management
  2169.     AH = 4Ch
  2170.     AL = function
  2171.         00h version check
  2172.         01h suspend system requested
  2173.         FFh suspend/resume battery notification
  2174.     ???
  2175. Return: ???
  2176. ----------2F4D-------------------------------
  2177. INT 2F U - ???
  2178.     AH = 4Dh
  2179.     ???
  2180. Return: ???
  2181. Note:    reportedly called by Kana Kanji Converter and MSKK
  2182. --------N-2F4E53BL00-------------------------
  2183. INT 2F - SilverNET v2+ - INSTALLATION CHECK
  2184.     AX = 4E53h ("NS")
  2185.     BL = 00h (function "installation check")
  2186.     BH = module ID (see #2051)
  2187. Return: AX = 0000h if specified module installed
  2188.     BX = 4E53h if installed
  2189. Program: SilverNET is an SMB-compatible peer-to-peer NOS for DOS or
  2190.       Windows systems, by Net-Source, Inc. of Santa Clara, CA.
  2191. SeeAlso: AX=4E53h/BL=01h,AX=4E53h/BL=02h,AX=B800h,AX=B809h
  2192.  
  2193. (Table 2051)
  2194. Values for SilverNET module ID:
  2195.  01h    SilverCACHE
  2196.  02h    Workstation
  2197.  03h    NetBIOS
  2198.  04h    Peer
  2199.  20h    NS Share
  2200.  80h    NetWare help TSR
  2201. --------N-2F4E53BL01-------------------------
  2202. INT 2F - SilverNET - GET RUNTIME PARAMETER
  2203.     AX = 4E53h ("NS")
  2204.     BL = 01h (function "get runtime parameter")
  2205.     BH = module ID (see #2051)
  2206.     CX = parameter index (see #2052,#2054,#2055)
  2207. Return: AX = WORD value at specified index (see #2053)
  2208. Desc:    retrieve a word of data from the specified SilverNET module
  2209.  
  2210. (Table 2052)
  2211. Values for SilverNET Peer parameter index (* = read-only):
  2212.  00h *    maximum outstanding SMB buffers
  2213.  02h *    maximum logged-in nodes
  2214.  04h *    number of shareable resources
  2215.  06h *    number of characters to print per time slice
  2216.  08h *    number of printers that can be shared
  2217.  0Ah *    number of nodes logged in
  2218.  0Ch *    number of files to allow opened
  2219.  0Eh    how fast to despool (/PSLICE)
  2220.  10h    audit flag
  2221.  24h *    far pointer to resource table (each resource is 96 bytes in length)
  2222.  32h *    far pointer to SFT (internal if SilverNET files > CONFIG.SYS files,
  2223.     else DOS SFT)
  2224.  36h    spool flags (see #2053)
  2225.  
  2226. Bitfields for spool flags:
  2227. Bit(s)    Description    (Table 2053)
  2228.  0    LPT1 needs despooling
  2229.  1    LPT2 needs despooling
  2230.  2    LPT2 needs despooling
  2231.  4    COM1 needs despooling
  2232.  5    COM2 needs despooling
  2233.  6    COM3 needs despooling
  2234.  
  2235. (Table 2054)
  2236. Values for NS Share parameter index (* = read-only):
  2237.  00h    version number (high byte = minor, low byte = major)
  2238.  10h *    segment of first lock record (other records in consecutive paragraphs)
  2239.     (if PSP field = 0000h, lock record is free)
  2240.  12h *    maximum possible number of lock records
  2241.  14h *    starting segment of sharing buffer
  2242.     (NS Share's sharing records are identical to DOS SHARE except that
  2243.       fields which are normally offsets into SHARE are segment numbers)
  2244.  18h *    size of sharing buffer in paragraphs
  2245.  1Ah *    total free paragraphs in sharing buffer
  2246.  1Ch *    current number of shared files
  2247.  1Eh *    current number of locked records
  2248.  
  2249. (Table 2055)
  2250. Values for Workstation parameter index (* = read-only):
  2251.  00h    version number (high byte = minor, low byte = major)
  2252.  02h *    size of each network buffer for file operations
  2253.  04h *    number of redirector file buffers
  2254.  06h *    size of each print cache buffer
  2255.  08h *    number of network LPT printers
  2256.  0Ch    flush time in ticks (idle time on network printer before flushing)
  2257.  0Eh    (16 WORDs) last active time for each printer
  2258.  2Eh *    stub segment if program split into two parts
  2259.  60h    receive name number for datagram listens
  2260.  62h *    18-byte machine name
  2261.  74h *    LASTDRIVE (01h = A:, etc.)
  2262.  7Ch    row number of message box on screen
  2263.  7Eh    message time in clock ticks
  2264.  82h *    number of network adapters in use
  2265.  84h    station ID broadcast flag (never set on redirectors)
  2266.  96h *    NetBIOS names left
  2267.  98h *    NCBs left
  2268.  9Ah *    sessions left
  2269.  A2h *    total number of network printers (LPT+COM)
  2270.  A4h *    number of serial network printers
  2271.  A8h *    segment containing file cache buffers
  2272.  AAh *    segment containing print cache buffers
  2273.  ACh *    bytes remaining free in HMA before program loaded
  2274.  AEh *    start of free memory in HMA
  2275.  B2h *    flag: using HMA
  2276. --------N-2F4E53BL02-------------------------
  2277. INT 2F - SilverNET - SET RUNTIME PARAMETERS
  2278.     AX = 4E53h ("NS")
  2279.     BL = 02h (function "set runtime parameters")
  2280.     BH = module ID (see #2051)
  2281.     CX = parameter index (see #2054,#2055)
  2282.     DX = new value for specified parameter
  2283. Desc:    set a WORD value in the specified SilverNET module
  2284. Note:    not all indexed parameters are writable; modifying a read-only
  2285.       parameter can result in system crashes
  2286. SeeAlso: AX=4E53h/BL=00h,AX=4E53h/BL=01h
  2287. --------N-2F5100-----------------------------
  2288. INT 2F U - ODIHLP.EXE - INSTALLATION CHECK
  2289.     AX = 5100h
  2290. Return: AL = FFh if installed
  2291.         BX = 0000h
  2292.         DX:SI -> signature string "ODI$HLP$"
  2293. Program: ODIHLP is a real-mode helper allowing the Windows for Workgroups 3.11
  2294.       protected-mode NDIS3 protocol to work with real-mode ODI drivers
  2295.       and LSL.COM
  2296. Note:    the returned signature string might be the first field of a structure
  2297. SeeAlso: AX=C000h"LSL.COM"
  2298. --------k-2F5200-----------------------------
  2299. INT 2F - JAM.SYS v1.10+ - "GetVersion" - INSTALLATION CHECK
  2300.     AX = 5200h
  2301. Return: AH = 80h (successful) if installed
  2302.     BX = internal JAM.SYS version number
  2303.     CX = size of JAMINFO structure (see #2056,#2057)
  2304.     DX = JAM.SYS segment address
  2305. Program: JAM.SYS is a main component of the JAM Real-Time Data Compression
  2306.       Utilities by George A. Reznik and friends (JAM Software).
  2307. SeeAlso: AX=5201h
  2308.  
  2309. Format of JAMINFO v1.10 structure:
  2310. Offset    Size    Description    (Table 2056)
  2311.  00h 25 BYTEs    extended BIOS parameter block (BPB)
  2312.  19h 11 BYTEs    ???
  2313.  25h    DWORD    total number of sectors in JAM archive file
  2314.         (size of compressed data area)
  2315.  29h    BYTE    flags (see #2058)
  2316.  2Ah 127 BYTEs    full JAM archive file name
  2317.  A9h    WORD    the number of fragments in archive file
  2318.  ABh 96 BYTEs    archive file fragmentation list -
  2319.         array of 16 FRAGMENT structures (see #2059)
  2320. 10Bh    DWORD    address of the host-drive DPB (Drive Parameter Block)
  2321. 10Fh    DWORD    number of free sectors in JAM archive file
  2322. 113h    WORD    device status word (see #2060)
  2323. SeeAlso: #2057
  2324.  
  2325. Format of JAMINFO v1.20 structure:
  2326. Offset    Size    Description    (Table 2057)
  2327.  00h 25 BYTEs    extended BIOS parameter block (BPB)
  2328.  19h    BYTE    physical driver number
  2329.  1Ah    BYTE    reserved
  2330.  1Bh    BYTE    extended boot record signature
  2331.  1Ch    DWORD    volume serial number
  2332.  20h 11 BYTEs    volume label
  2333.  2Bh  8 BYTEs    file system ID
  2334.  33h    DWORD    total number of sectors in JAM archive file
  2335.         (size of compressed data area)
  2336.  37h    BYTE    flags (see #2058)
  2337.  38h 128 BYTEs    full JAM archive file name
  2338.  B8h    WORD    the number of fragments in archive file
  2339.  BAh 96 BYTEs    archive file fragmentation list -
  2340.         array of 16 FRAGMENT structures (see #2059)
  2341. 11Ah    DWORD    address of the host-drive DPB (Drive Parameter Block)
  2342. 11Eh    DWORD    number of free sectors in JAM archive file
  2343. 122h    WORD    device status word (see #2060)
  2344. Note:    the first 33h bytes are copied from the archive file's boot sector
  2345. SeeAlso: #2056
  2346.  
  2347. Bitfields for JAMINFO flags:
  2348. Bit(s)    Description    (Table 2058)
  2349.  2-0    reserved
  2350.  3    (v1.20+)
  2351.  4    enable direct write requests (Int 26h, non-DOS requests, etc.)
  2352.  5    read-only mode
  2353.  6    no write-behind caching
  2354.  7    full undelete-compatible allocation strategy
  2355. SeeAlso: #2056,#2057
  2356.  
  2357. Format of JAM FRAGMENT structure:
  2358. Offset    Size    Description    (Table 2059)
  2359.  00h    WORD    starting sector (low word)
  2360.  02h    BYTE    starting sector (high byte)
  2361.  03h    WORD    size of fragment (low word)
  2362.  05h    BYTE    size of fragment (high byte)
  2363. SeeAlso: #2056,#2057
  2364.  
  2365. (Table 2060)
  2366. Values for JAM.SYS status (high byte):
  2367.  00h    successful
  2368.  01h    drive is not a JAM drive
  2369.  02h    drive is already attached
  2370.  03h    archive file cluster size value is larger than driver's one
  2371.  04h    drive is not attached
  2372.  05h    drive is locked
  2373.  06h    drive is not locked
  2374.  07h    bad physical-level request
  2375.  08h    host drive reading/writing error
  2376.  09h    bad entries in JAM descriptor table
  2377.  0Ah    compressed data integrity error
  2378.  0Bh    archive file overflow
  2379.  0Ch    bad DOS request
  2380.  0Dh    incorrect parameters in JAMINFO structure
  2381. Note:    the low byte of the status is the DOS error code for the Host drive
  2382. SeeAlso: #1885 at INT 2F/AX=0802h
  2383. --------k-2F5201-----------------------------
  2384. INT 2F - JAM.SYS v1.10+ - "GetInfo" - GET COMPRESSED DRIVE INFORMATION
  2385.     AX = 5201h
  2386.     DL = compressed drive number (0-default, 1-A:, etc.)
  2387.     DS:BX -> buffer for JAMINFO structure (see #2056,#2057)
  2388. Return: AH = status (00h,01h) (see #2060)
  2389. SeeAlso: AX=5200h
  2390. --------k-2F5202-----------------------------
  2391. INT 2F - JAM.SYS v1.10+ - "Attach" - MOUNT COMPRESSED DRIVE
  2392.     AX = 5202h
  2393.     DL = drive number (0-default, 1-A:, etc.) to attach to the JAM
  2394.           archive file
  2395.     DS:BX -> pointer to JAMINFO structure (see #2056,#2057), which
  2396.           contains parameters of the JAM file to mount, and pointer
  2397.           to the host drive DPB (i.e. DPB of the drive on which the
  2398.           JAM file is located)
  2399. Return: AH = status (00h,02h,03h,08h,09h,0Dh) (see also #2060)
  2400.         03h archive file cluster size value is larger than driver's - not
  2401.           mounted
  2402.         09h bad entries in JAM descriptor table - file mounted read-only
  2403.     AL = host drive error code (see #1885 at INT 2F/AX=0802h)
  2404. SeeAlso: AX=5203h
  2405. --------k-2F5203-----------------------------
  2406. INT 2F - JAM.SYS v1.10+ - "Detach" - UNMOUNT COMPRESSED DRIVE
  2407.     AX = 5203h
  2408.     DL = drive number (0-default, 1-A:, etc.) to detach
  2409. Return: AH = status (00h,01h,04h,05h,08h,09h,0Bh,0Dh) (see #2060)
  2410.     AL = host drive error code (see #1885 at INT 2F/AX=0802h)
  2411. SeeAlso: AX=5202h
  2412. --------k-2F5204-----------------------------
  2413. INT 2F - JAM.SYS v1.10+ - "Lock" - LOCK COMPRESSED DRIVE
  2414.     AX = 5204h
  2415.     DL = drive number (0-default, 1-A:, etc.) to lock
  2416. Return: AH = status (00h,01h,04h,05h,08h,09h,0Bh,0Dh) (see #2060)
  2417.     AL = host drive error code (see #1885 at INT 2F/AX=0802h)
  2418. SeeAlso: AX=5205h, AX=5206h, AX=5207h
  2419. --------k-2F5205-----------------------------
  2420. INT 2F - JAM.SYS v1.10+ - "UnLock" - UNLOCK COMPRESSED DRIVE
  2421.     AX = 5205h
  2422.     DL = drive number (0-default, 1-A:, etc.) to unlock
  2423. Return: AH = status (00h,01h,04h,06h,08h,09h,0Dh) (see #2060)
  2424.     AL = host drive error code (see #1885 at INT 2F/AX=0802h)
  2425. SeeAlso: AX=5204h, AX=5206h, AX=5207h
  2426. Note:    Lock and UnLock functions were added to the JAM API to prevent
  2427.       asynchronous physical-level access (see AX=5206h,AX=5207h) to
  2428.       compressed data on JAM drives. In other words, two or more programs
  2429.       which use JAM API (say, JMAX optimizer and JCHKDSK - disk checker)
  2430.       cannot be run on the same JAM drive simultaneously.
  2431. --------k-2F5206-----------------------------
  2432. INT 2F - JAM.SYS v1.10+ - "Read" - PHYSICAL READ DATA FROM JAM ARCHIVE
  2433.     AX = 5206h
  2434.     DL = drive number (0-default, 1-A:, etc.)
  2435.     DS:BX -> disk transfer packet (see #2061)
  2436. Return: AH = status (00h,01h,04h,06h,07h,08h,0Dh) (see #2060)
  2437.     AL = host drive error code (see #1885 at INT 2F/AX=0802h)
  2438. Program: JAM.SYS is a main component of the JAM Real-Time Data Compression
  2439.       Utilities by George A. Reznik and friends (JAM Software).
  2440. SeeAlso: AX=5207h
  2441.  
  2442. Format of disk transfer packet:
  2443. Offset    Size    Description    (Table 2061)
  2444.  00h    DWORD    sector number
  2445.  04h    WORD    number of sectors to read(write)
  2446.  06h    DWORD    transfer address
  2447. --------k-2F5207-----------------------------
  2448. INT 2F - JAM.SYS v1.10+ - "Write" - PHYSICAL WRITE DATA TO JAM ARCHIVE
  2449.     AX = 5207h
  2450.     DL = drive number (0-default, 1-A:, etc.)
  2451.     DS:BX -> disk transfer packet (see #2061)
  2452. Return: AH = status (00h,01h,04h,06h,07h,08h,0Dh) (see #2060)
  2453.     AL = host drive error code (see #1885 at INT 2F/AX=0802h)
  2454. SeeAlso: AX=5206h
  2455. --------p-2F53-------------------------------
  2456. INT 2F U - POWER.EXE - APM event broadcasting???
  2457.     AH = 53h
  2458.     AL = event???
  2459.         05h CPU idle
  2460.         0Bh PM event broadcast API
  2461. Return: ???
  2462. Note:    called by MS Windows 3.1 POWER.DRV; hooked by MS Mouse driver v8.20+
  2463.       and PC-Cache v8.0
  2464. SeeAlso: AX=530Bh,AH=54h,INT 33/AX=002Fh
  2465. --------p-2F530B-----------------------------
  2466. INT 2F U - ??? (MOUSEPWR.COM, others) - ???
  2467.     AX = 530Bh
  2468.     BX = subfunction
  2469.         0003h ???
  2470.         0004h ???
  2471.     ???
  2472. Return: ???
  2473. Note:    it appears that subfunction 0003h reads or restores the current mouse
  2474.       settings (the MS Mouse driver hooks AX=530Bh), and 0004h might be
  2475.       the converse
  2476. --------p-2F5400-----------------------------
  2477. INT 2F U - POWER.EXE - INSTALLATION CHECK
  2478.     AX = 5400h
  2479. Return: AX = POWER.EXE version (AH = major, AL = minor) if installed
  2480.     BX = 504Dh ("PM")
  2481.     CF clear
  2482. Note:    called by MS Windows 3.1 POWER.DRV
  2483. SeeAlso: AH=53h,AX=5401h,AX=5402h,AX=5481h,AX=5482h
  2484. --------p-2F5401-----------------------------
  2485. INT 2F U - POWER.EXE - GET/SET POWER STATUS
  2486.     AX = 5401h
  2487.     BH = function
  2488.         00h get status
  2489.         Return: BL = current power management status (see #2062)
  2490.         01h set status
  2491.         BL = new power managment status (see #2062)
  2492. Return: AX = function status (see #2063)
  2493. Note:    called by MS Windows 3.1 POWER.DRV
  2494. SeeAlso: AH=53h,AX=5400h,AX=5402h,AX=5403h
  2495.  
  2496. Bitfields for power management status:
  2497. Bit(s)    Description    (Table 2062)
  2498.  0    POWER.EXE power management enabled
  2499.  1    APM firmware power management enabled
  2500.  2-7    reserved (0)
  2501. Notes:    bit 1 is ignored if there is no APM firmware
  2502.     bits 1-0: 00 = POWER OFF, 10 = POWER STD, 11 = POWER ADV
  2503.  
  2504. (Table 2063)
  2505. Values for POWER.EXE function status:
  2506.  0000h    successful
  2507.  0002h    "ERROR_PM_ALREADY_CONNECTED"
  2508.  0003h    "ERROR_PM_NOT_CONNECTED"
  2509.  0087h    "ERROR_PM_INVALID_PARAMETER"
  2510. --------p-2F5402-----------------------------
  2511. INT 2F U - POWER.EXE - GET/SET IDLE DETECTION STRATEGY
  2512.     AX = 5402h
  2513.     BH = subfunction
  2514.         00h get
  2515.         other set
  2516.         BL = detection strategy (00h-0Fh or FFh)
  2517. Return: BX = current/new detection strategy
  2518. SeeAlso: AH=53h,AX=5400h,AX=5401h,AX=5481h,AX=5482h
  2519. --------p-2F5403-----------------------------
  2520. INT 2F U - POWER.EXE - GET/SET ADVANCED POWER MANAGEMENT SETTING
  2521.     AX = 5403h
  2522.     BX = new power management setting or 0000h to get current setting
  2523. Return: AX = status
  2524.         0000h successful
  2525.         BX = power management setting (see #2064)
  2526.         other error code
  2527. SeeAlso: AX=5401h,AX=5480h
  2528.  
  2529. (Table 2064)
  2530. Values for power management setting:
  2531.  0001h-0005h "min"
  2532.  0006h         "reg"
  2533.  0007h-0008h "max"
  2534. --------t-2F5453-----------------------------
  2535. INT 2F - TesSeRact RAM-RESIDENT PROGRAM INTERFACE
  2536.     AX = 5453h
  2537.     BX = subfunction
  2538.         00h installation check
  2539.         CX = 0000h
  2540.         DS:SI -> 8-char blank-padded name (see #2065)
  2541.         Return: AX = FFFFh installed
  2542.                 CX = ID number of already-installed copy
  2543.             AX = anything else, not installed
  2544.                 CX = ID number for TSR when installed
  2545.         01h get user parameters
  2546.         CX = TSR ID number
  2547.         Return: AX = status
  2548.                 0000h successful
  2549.                 ES:BX -> user parameter block (see #2066)
  2550.                 nonzero failed
  2551.         02h check if hotkey in use
  2552.         CL = scan code of hot key (see #0005)
  2553.         Return: AX = FFFFh hot key conflicts with another TSR
  2554.                  otherwise safe to use the hotkey
  2555.         03h replace default critical error handler
  2556.         CX = TSR ID number
  2557.         DS:SI -> new routine for INT 24h
  2558.         Return: AX = nonzero, unable to install new handler
  2559.         04h get internal data area
  2560.         CX = TSR ID number
  2561.         Return: AX = status
  2562.                 0000h successful
  2563.                 ES:BX -> TSR's internal data area (see #2067)
  2564.                 nonzero, TSR not found
  2565.         05h set multiple hot keys
  2566.         CX = TSR ID number
  2567.         DL = number of additional hot keys to allocate
  2568.         DS:SI -> table of hot keys
  2569.             BYTE  hotkey scan code (see #0005)
  2570.             BYTE  hotkey shift state
  2571.             BYTE  flag value to pass to TSR (nonzero)
  2572.         Return: AX = nonzero, unable to install hot keys
  2573.         06h - 0Fh reserved
  2574.         10h enable TSR
  2575.         CX = TSR ID number
  2576.         Return: AX = nonzero, unable to enable
  2577.         11h disable TSR
  2578.         CX = TSR ID number
  2579.         Return: AX = nonzero, unable to disable
  2580.         12h unload TSR
  2581.         CX = TSR ID number
  2582.         Return: AX = nonzero, invalid TSR number
  2583.         Note: if any interrupts used by TSR have been grabbed by
  2584.             another TSR, the TesSeRact routines will wait until
  2585.             it is safe to remove the indicated TSR from memory
  2586.         13h restart TSR
  2587.         CX = TSR ID number of TSR which was unloaded but is still in
  2588.              memory
  2589.         Return: AX = nonzero, unable to restart TSR
  2590.         14h get status word
  2591.         CX = TSR ID number
  2592.         Return: AX = FFFFh invalid ID number
  2593.                = other, successful
  2594.                 BX = bit flags
  2595.         15h set status word
  2596.         CX = TSR ID number
  2597.         DX = new bit flags
  2598.         Return: AX = nonzero, unable to set status word
  2599.         16h get INDOS state at popup
  2600.         CX = TSR ID number
  2601.         Return: AX = 0000h successful
  2602.                 BX = value of INDOS flag
  2603.         17h - 1Fh reserved
  2604.         20h call user procedure
  2605.         CX = TSR ID number
  2606.         ES:DI -> user-defined data
  2607.         Return: AX = 0000h successful
  2608.         21h stuff keystrokes into keyboard buffer
  2609.         CX = TSR ID number
  2610.         DL = speed
  2611.             00h stuff keystrokes only when buffer is empty
  2612.             01h stuff up to four keystrokes per clock tick
  2613.             02h stuff up to 15 keystrokes per clock tick
  2614.         DH = scan code flag
  2615.             if zero, buffer contains alternating ASCII and scan codes
  2616.             if nonzero, buffer contains only ASCII codes
  2617.         SI = number of keystrokes
  2618.         ES:DI -> buffer to stuff
  2619.         Return: AX = 0000h success
  2620.                  F0F0h user aborted with ^C or ^Break
  2621.                  other unable to stuff keystrokes
  2622.         22h (v1.10) trigger popup
  2623.         CX = TSR ID number
  2624.         Return: AX = 0000h success, TSR will either pop up or beep to
  2625.                    indicate that it is unable to pop up
  2626.                  nonzero invalid ID number
  2627.         23h (v1.10) invoke TSR's background function
  2628.         CX = TSR ID number
  2629.         Return: AX = 0000h success
  2630.                  FFFFh not safe to call background function
  2631.                  nonzero invalid ID number
  2632.         24h - 2Fh reserved
  2633. Notes:    Borland's THELP.COM popup help system for Turbo Pascal and Turbo C
  2634.       (versions 1.x and 2.x only) fully supports the TesSeRact API, as
  2635.       do the SWAP?? programs by Innovative Data Concepts.
  2636.     AVATAR.SYS supports functions 00h and 01h (only the first three fields
  2637.       of the user parameter block) using the name "AVATAR  "
  2638. SeeAlso: AX=CAFEh,INT 16/AX=55FFh,INT 2D"AMIS"
  2639. Index:    installation check;TesSeRact TSR interface|uninstall;TesSeRact
  2640.  
  2641. (Table 2065)
  2642. Values for TesSeRact names:
  2643.  "AVATAR  "    AVATAR.SYS
  2644.  "QeditTSR"    TSR version of SemWare's Qedit editor
  2645.  "SCRNBLNK"    Trusted Access screen blanker
  2646.  
  2647. Format of TesSeRact User Parameter Block:
  2648. Offset    Size    Description    (Table 2066)
  2649.  00h  8 BYTEs    blank-padded TSR name
  2650.  08h    WORD    TSR ID number
  2651.  0Ah    DWORD    bitmap of supported functions
  2652.  0Eh    BYTE    scan code of primary hotkey (see #0005)
  2653.         00h = pop up when shift states match
  2654.         FFh = no popup (if shift state also FFh)
  2655.  0Fh    BYTE    shift state of primary hotkey
  2656.         FFh = no popup (if scan code also FFh)
  2657.  10h    BYTE    number of secondary hotkeys
  2658.  11h    DWORD    pointer to extra hotkeys set by func 05h
  2659.  15h    WORD    current TSR status flags
  2660.  17h    WORD    PSP segment of TSR
  2661.  19h    DWORD    DTA for TSR
  2662.  1Dh    WORD    default DS for TSR
  2663.  1Fh    DWORD    stack at popup
  2664.  23h    DWORD    stack at background invocation
  2665. Index:    hotkeys;TesSeRact TSR interface
  2666.  
  2667. Format of TSR internal data area:
  2668. Offset    Size    Description    (Table 2067)
  2669.  00h    BYTE    revision level of TesSeRact library
  2670.  01h    BYTE    type of popup in effect
  2671.  02h    BYTE    INT 08 occurred since last invocation
  2672.  03h    BYTE    INT 13 occurred since last invocation
  2673.  04h    BYTE    active interrupts
  2674.  05h    BYTE    active soft interrupts
  2675.  06h    BYTE    DOS major version
  2676.  07h    BYTE    how long to wait before popping up
  2677.  08h    DWORD    pointer to INDOS flag
  2678.  0CH    DWORD    pointer to DOS critical error flag
  2679.  10h    WORD    PSP segment of interrupted program
  2680.  12h    WORD    PSP segment of prog interrupted by INT 28
  2681.  14h    DWORD    DTA of interrupted program
  2682.  18h    DWORD    DTA of program interrupted by INT 28
  2683.  1Ch    WORD    SS of interrupted program
  2684.  1Eh    WORD    SP of interrupted program
  2685.  20h    WORD    SS of program interrupted by INT 28
  2686.  22h    WORD    SP of program interrupted by INT 28
  2687.  24h    DWORD    INT 24 of interrupted program
  2688.  28h  3 WORDs    DOS 3.0+ extended error info
  2689.  2Eh    BYTE    old BREAK setting
  2690.  2Fh    BYTE    old VERIFY setting
  2691.  30h    BYTE    were running MS WORD 4.0 before popup
  2692.  31h    BYTE    MS WORD 4.0 special popup flag
  2693.  32h    BYTE    enhanced keyboard call in use
  2694.  33h    BYTE    delay for MS WORD 4.0
  2695. 11 times (for INTs 08h,09h,13h,16h,1Ch,21h,28h,2Fh,1Bh,23h, and 24h):
  2696.     DWORD    old interrupt vector
  2697.     BYTE    interrupt number
  2698.     WORD    offset in TesSeRact code segment of new interrupt handler
  2699. --------p-2F5480-----------------------------
  2700. INT 2F U - POWER.EXE - GET/SET ???
  2701.     AX = 5480h
  2702.     BX = direction
  2703.         0000h get
  2704.         other set
  2705.     CX = size of buffer (at least 0010h)
  2706.     DS:SI -> buffer
  2707. Return: AX = status
  2708.         0000h successful
  2709.         other error code
  2710. SeeAlso: AX=5400h,AX=5481h,AX=548Fh
  2711. --------p-2F5481-----------------------------
  2712. INT 2F U - POWER.EXE - GET STATISTICS
  2713.     AX = 5481h
  2714.     BX = which statistics
  2715.         0000h idle detection
  2716.         0001h APM statistics
  2717.     CX = length of buffer in bytes
  2718.     DS:SI -> buffer for statistics (see #2068,#2069)
  2719. Return: AX = status
  2720.         0000h successful
  2721.         0071h "ERROR_PM_BUFFER_TOO_SMALL"
  2722.         0087h "ERROR_PM_INVALID_PARAMETER"
  2723. SeeAlso: AH=53h,AX=5400h,AX=5480h,AX=5402h,AX=5482h
  2724.  
  2725. Format of POWER.EXE idle detection statistics:
  2726. Offset    Size    Description    (Table 2068)
  2727.  00h    DWORD    "CPU_ON_TIME" total time CPU is active with POWER.EXE idle
  2728.           detection enabled, in timer ticks
  2729.  04h    DWORD    "CPU_IDLE_TIME" timer ticks during which CPU was idle
  2730.         (divide by previous to get idle    rate)
  2731.  08h    DWORD    total idle calls
  2732.  0Ch    DWORD    "TOTAL_APP_IDLE" total INT 2Fh idle calls
  2733.  10h    DWORD    "TOTAL_DOS_YIELD" total INT 28h idle calls
  2734.  14h    DWORD    "TOTAL_KEY_IDLE" total INT 16h idle calls
  2735.  18h    DWORD    "TOTAL_DOS_IDLE" total INT 2Ah idle calls
  2736.  
  2737. Format of APM statistics:
  2738. Offset    Size    Description    (Table 2069)
  2739.  00h    DWORD    "RESUME_COUNT" total number of resumes since last APM_ENABLE
  2740. --------p-2F5482-----------------------------
  2741. INT 2F U - POWER.EXE - GET/SET APM POLLING FREQUENCY
  2742.     AX = 5482h
  2743.     BX = new polling frequency or 0000h to get current frequency
  2744. Return: AX = 0000h (successful)
  2745.     BX = current frequency if BX=0000h on entry
  2746. SeeAlso: AH=53h,AX=5400h,AX=5401h,AX=5480h,AX=5481h,AX=548Fh
  2747. --------p-2F548F-----------------------------
  2748. INT 2F U - POWER.EXE - GET/SET ???
  2749.     AX = 548Fh
  2750.     BX = ??? or 0000h to get current ???
  2751. Return: AX = 0000h (successful)
  2752.     BX = current ???
  2753.     CX = ???
  2754. SeeAlso: AX=5400h,AX=5480h,AX=5482h
  2755. --------l-2F5500-----------------------------
  2756. INT 2F U - DOS 5+ - COMMAND.COM INTERFACE
  2757.     AX = 5500h
  2758. Return: AX = 0000h if an instance of COMMAND.COM is already running
  2759.     DS:SI -> entry point table
  2760. Notes:    used to access the shareable portion of COMMAND.COM, which may have
  2761.       been moved into the HMA; only the primary COMMAND.COM retains this
  2762.       portion
  2763.     procedures called from a dispatcher in COMMAND's resident portion;
  2764.       most assume that the segment address of the resident portion is on
  2765.       the stack and are thus not of general use
  2766. SeeAlso: AX=5501h
  2767. --------l-2F5501-----------------------------
  2768. INT 2F U - DOS 5+ - ROM COMMAND.COM INTERFACE
  2769.     AX = 5501h
  2770. Return: ???
  2771. Note:    used to determine whether the caller is the first instance of ROM
  2772.       COMMAND.COM
  2773. SeeAlso: AX=5500h
  2774. --------R-2F5600-----------------------------
  2775. INT 2F - INTERLNK - INSTALLATION CHECK
  2776.     AX = 5600h
  2777.     DX = magic value FFFFh
  2778.     BL = instance number (00h = any, 01h = first loaded, etc.)
  2779. Return: AL = FFh if installed
  2780.         BL = instance number
  2781.         CX = ??? (apparently always 0001h)
  2782.         DX = resident CS of driver, DX:0000h -> header (see #2070)
  2783. SeeAlso: AX=5601h,AX=5602h,INT 60/AX=0000h
  2784.  
  2785. Format of Interlnk device driver header:
  2786. Offset    Size    Description    (Table 2070)
  2787.  00h    DWORD    pointer to next driver, offset=FFFFh if last driver
  2788.  04h    WORD    device attributes (see #0954,#0955)
  2789.  06h    WORD    device strategy entry point
  2790.  08h    WORD    device interrupt entry point
  2791.  0Ah  8 BYTEs    character device name "NUL2    "
  2792.  12h 165 BYTEs    ???
  2793.  B7h 67 BYTEs    fully qualified Interlnk filename
  2794.  FAh  6 BYTEs    ???
  2795. 100h    DWORD    pointer back to Interlnk filename at offset B7h
  2796. 104h  8 BYTEs    ???
  2797. 10Ch    BYTE    total number of redirected drives
  2798. 10Dh    BYTE    first local drive number (0=A:)
  2799. 10Eh    BYTE    printer redirection (0=no, 1=yes)
  2800. 10Fh    BYTE    ???
  2801. 110h  3    BYTEs    LPT1...3 status (0FFh=invalid)
  2802. 113h 26 BYTEs    remote drive number (0=A:, 0FEh=unused) (see note below)
  2803. 12Dh 26 BYTEs    always 0FEh ???
  2804. 147h 26 BYTEs    always 0FFh ???
  2805. Note:    to obtain the remote drive number, subtract the value at offset 10Ch
  2806.       from the local drive number before indexing into the table at 113h
  2807.       (example: if local drives F, G, H are remote drives C, F, E then
  2808.       the first three bytes at offset 113h are 02h, 05h, 04h)
  2809.     for each instance of Interlnk, an extra device driver is loaded, but
  2810.       all have the same device name NUL2
  2811. SeeAlso: #0953 at INT 21/AH=52h
  2812. --------R-2F5601-----------------------------
  2813. INT 2F - INTERLNK - CHECK IF REDIRECTED DRIVE
  2814.     AX = 5601h
  2815.     DX = magic value FFFFh
  2816.     BH = drive number (0=A:)
  2817.     BL = 00h
  2818. Return: (as for AL=00h if redirected drive)
  2819. SeeAlso: AX=5600h
  2820. --------R-2F5602-----------------------------
  2821. INT 2F - INTERLNK - GET ???
  2822.     AX = 5602h
  2823.     DX = magic value FFFFh
  2824. Return: CX = ???
  2825. SeeAlso: AX=5600h
  2826. --------d-2F5700-----------------------------
  2827. INT 2F U - IOMEGA DRIVERS - INSTALLATION CHECK
  2828.     AX = 5700h
  2829.     BX = program ID??? (0201h used by GUEST.EXE)
  2830.     DX = 496Fh ('Io')
  2831. Return: AL = status
  2832.         00h not installed
  2833.         FFh installed
  2834. SeeAlso: AX=5701h,AX=5710h,AX=5711h,AX=5712h
  2835. --------d-2F5700-----------------------------
  2836. INT 2F U - IOMEGA DRIVERS - ???
  2837.     AX = 5701h
  2838.     BX = program ID??? (0201h used by GUEST.EXE)
  2839.     DX = 496Fh ('Io')
  2840. Return: AX = 0001h
  2841. SeeAlso: AX=5700h,AX=5710h,AX=5711h,AX=5712h
  2842. --------d-2F5700-----------------------------
  2843. INT 2F U - IOMEGA DRIVERS - GET DRIVER INFORMATION???
  2844.     AX = 5710h
  2845.     BX = program ID??? (0201h used by GUEST.EXE)
  2846.     DX = 496Fh ('Io')
  2847. Return: AX = ??? (BX ORed with ???)
  2848.     BX = ??? (internal variable)
  2849.     CX = ??? (internal variable)
  2850.     DX = ??? (CX ORed with ???)
  2851. SeeAlso: AX=5700h,AX=5701h,AX=5711h,AX=5712h
  2852. --------d-2F5700-----------------------------
  2853. INT 2F U - IOMEGA DRIVERS - LOCK MEDIA IN DRIVE
  2854.     AX = 5711h
  2855.     BX = program ID??? (0201h used by GUEST.EXE)
  2856.     DX = 496Fh ('Io')
  2857. Return: CF clear if successful (storage medium in drive)
  2858.         AX = new lock count
  2859.     CF set on error (drive empty)
  2860. SeeAlso: AX=5700h,AX=5701h,AX=5710h,AX=5712h
  2861. --------d-2F5700-----------------------------
  2862. INT 2F U - IOMEGA DRIVERS - UNLOCK MEDIA IN DRIVE / EJECT
  2863.     AX = 5712h
  2864.     BX = program ID??? (0201h used by GUEST.EXE)
  2865.     DX = 496Fh ('Io')
  2866. Return: AX = new lock count (00h = unlocked)
  2867. Note:    if the lock count was already zero, the storage medium is ejected
  2868.       from the drive
  2869. SeeAlso: AX=5700h,AX=5701h,AX=5710h,AX=5711h
  2870. --------c-2F5758BX4858-----------------------
  2871. INT 2F U - Helix Multimedia Cloaking - CACHECLK - INSTALLATION CHECK
  2872.     AX = 5758h
  2873.     BX = 4858h ('HX')
  2874.     DX = 4443h ('DC')
  2875.     CX <> 5758h
  2876. Return: BX = 6878h if installed
  2877.     DX = 6463h if installed
  2878.        CX = version (CH=major,CL=minor)
  2879. Program: CACHECLK is a 'Cloaked' disk cache by Helix Software
  2880. Note:    returns with registers unchanged if CX=5758h on entry
  2881. SeeAlso: INT 16/AX=5758h/BX=4858h,INT 2F/AX=4310h"Cloaking"
  2882. --------X-2F5D00-----------------------------
  2883. INT 2F U - PCMCIA - AWARD PCDISK - GET INFO FROM DRIVER ???
  2884.     AX = 5D00h
  2885. Return: ES:BX -> ???
  2886. Note:    supported by Ventura Micro / Award PCDISK.EXE v1.02c PCMCIA/ATA driver
  2887. SeeAlso: AX=5D01h,INT 21/AX=440Dh
  2888. --------X-2F5D01-----------------------------
  2889. INT 2F U - PCMCIA - AWARD PCDISK - PUT INFO INTO DRIVER ???
  2890.     AX = 5D01h
  2891.     ES:BX -> ???
  2892. Return: nothing
  2893. Note:    supported by Ventura Micro / Award PCDISK.EXE v1.02c PCMCIA/ATA driver
  2894. SeeAlso: AX=5D00h,INT 21/AX=440Dh
  2895. --------s-2F60FFDL00-------------------------
  2896. INT 2F U - IPLAY v1.00b - INSTALLATION CHECK
  2897.     AX = 60FFh
  2898.     DL = 00h (function number)
  2899.     BX = 5344h ('SD')
  2900.     CX = 4D50h ('MP')
  2901. Return: AX = 4F4Bh ('OK') if installed
  2902. Program: IPLAY is the Inertia Player by Prime and Excalibur for .MODules
  2903.       (digitized music files)
  2904. Note:    in version 1.00b, any value for DL except 01h invokes this function
  2905. SeeAlso: AX=60FFh/DL=01h
  2906. --------s-2F60FFDL01-------------------------
  2907. INT 2F U - IPLAY v1.00b - GET DATA SEGMENT
  2908.     AX = 60FFh
  2909.     DL = 01h (function number)
  2910.     BX = 5344h ('SD')
  2911.     CX = 4D50h ('MP')
  2912. Return: AX = data segment
  2913. Program: IPLAY is the Inertia Player by Prime and Excalibur for .MODules
  2914.       (digitized music files)
  2915. SeeAlso: AX=60FFh/DL=00h
  2916. --------v-2F6282-----------------------------
  2917. INT 2F U - PC Tools v7.0+ VDEFEND, VSAFE, VWATCH, DATAMON - SET ??? ADDRESS
  2918.     AX = 6282h
  2919.     CX:DX -> ??? or 0000h:0000h
  2920.     DI = segment of ??? record (see #2071) or 0000h/FFFFh to ignore
  2921. Return: BX = 0062h
  2922. Note:    if CX:DX = 0000h:0000h on entry, the ??? address is not changed
  2923.       (DATAMON only)
  2924. SeeAlso: INT 13/AH=FAh"VSAFE",INT 21/AH=FAh"VDEFEND"
  2925.  
  2926. Format of VSAFE/VWATCH record:
  2927. Offset    Size    Description    (Table 2071)
  2928.  00h    DWORD    ???
  2929.  04h    WORD    offset of ??? in record's segment
  2930.         VSAFE 2.0 sets byte at +01h to 56h or 58h
  2931.         VWATCH 2.1 sets byte at +02h to 56h or 58h
  2932.  06h  2 BYTEs    ???
  2933.  08h    BYTE    ??? (01h/other)
  2934. --------v-2F6284BX0000-----------------------
  2935. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT    - INSTALLATION CHECK
  2936.     AX = 6284h
  2937.     BX = 0000h
  2938.     CX = 0000h
  2939. Return: AX = segment of resident code
  2940.     BX = 5555h
  2941.     CX = 5555h
  2942. Note:    also supported by DOS 6 UNDELETE which is licensed from PC Tools
  2943. SeeAlso: AX=6284h/BX=0001h,INT 16/AX=FFA3h
  2944. --------v-2F6284BX0001-----------------------
  2945. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  2946.     AX = 6284h
  2947.     BX = 0001h
  2948.     CX = 0001h
  2949. Return: AX:BX -> ??? data (see #2072)
  2950.     CX = BX
  2951. SeeAlso: AX=6284h/BX=0000h
  2952.  
  2953. Format of DPROTECT data for v9.0:
  2954. Offset    Size    Description    (Table 2072)
  2955.  00h  5 BYTEs    ???
  2956.  05h    WORD    resident code segment (may be segment of DWORD at +03h)
  2957.  07h    DWORD    -> FAR function to sound alert tone
  2958.     ???
  2959. --------v-2F6284BX0002-----------------------
  2960. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET OPTIONS
  2961.     AX = 6284h
  2962.     BX = 0002h
  2963.     CX = 0002h
  2964. Return: AX = options (see #2073)
  2965.     BX = ??? (0000h for v9)
  2966.     CX = AX
  2967.     DX = BX
  2968. Note:    also supported by DOS 6 UNDELETE which is licensed from PC Tools
  2969. SeeAlso: AX=6284h/BX=0000h,AX=6284h/BX=0003h
  2970.  
  2971. Bitfields for DATAMON/DPROTECT options:
  2972. Bit(s)    Description    (Table 2073)
  2973.  1    ???
  2974.  12    disabled
  2975.  13    using Delete Sentry
  2976.  14    using Delete Tracker
  2977. --------v-2F6284BX0003-----------------------
  2978. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - SET OPTION??? FLAGS
  2979.     AX = 6284h
  2980.     BX = 0003h
  2981.     CX = flags (see #2074)
  2982.     DX = flags
  2983.         bit 15: ???
  2984. Note:    v9 DPROTECT only checks bit 12 of CX, and ignores DX entirely
  2985. SeeAlso: AX=6284h/BX=0002h
  2986.  
  2987. Bitfields for DATAMON/DPROTECT CX flags:
  2988. Bit(s)    Description    (Table 2074)
  2989.  3    ???
  2990.  5    ???
  2991.  10    ???
  2992.  12    disable DATAMON/DPROTECT
  2993. --------v-2F6284BX0004-----------------------
  2994. INT 2F U - PC Tools v8 DATAMON, v9+ DPROTECT - ???
  2995.     AX = 6284h
  2996.     BX = 0004h
  2997.     CX = 0004h
  2998. Return: AX = 5555h
  2999.     BX = ??? (0800h)
  3000.     CX = ??? (FCCCh for v8, FCCBh for v9)
  3001. --------V-2F6400-----------------------------
  3002. INT 2F - SCRNSAV2.COM - INSTALLATION CHECK
  3003.     AX = 6400h
  3004. Return: AL = installation state
  3005.         00h not installed
  3006.         FFh installed
  3007. Program: SCRNSAV2.COM is a screen saver for PS/2s with VGA by Alan Ballard
  3008. SeeAlso: INT 10/AX=5555h,INT 14/AX=AA01h
  3009. Index:    screen saver;SCRNSAV2
  3010. --------N-2F7000-----------------------------
  3011. INT 2F - License Service API - INSTALLATION CHECK
  3012.     AX = 7000h
  3013.     CX = license server index (0000h to 001Fh)
  3014. Return: AL = status
  3015.         00h not installed
  3016.         FFh installed
  3017. Notes:    The License Service API is being maintained by Microsoft but is being
  3018.       supported by a large number of companies including Apple, Banyan,
  3019.       DEC, HP, Lotus, Microsoft, Novell, Software Publishers Association,
  3020.       and Wordperfect (not a complete list!)
  3021.     Each license service provider must search for the next free index
  3022.       slot to use
  3023. SeeAlso: AX=7001h,AX=7003h,AX=7004h,AX=7005h
  3024. --------N-2F7001-----------------------------
  3025. INT 2F - License Service API - REQUEST LICENSE
  3026.     AX = 7001h
  3027.     CX = license server index (0000h to 001Fh)
  3028.     DS:DX -> SLSREQUEST structure (see #2075)
  3029. Return: AX = status
  3030.         0000h success
  3031.         else  provider error code
  3032.     ES:BX = provider specific handle for the license context
  3033. SeeAlso: AX=7002h,AX=7004h,AX=7005h
  3034.  
  3035. Format of License Service SLSREQUEST structure:
  3036. Offset    Size    Description    (Table 2075)
  3037.  00h    DWORD    (ret) status code
  3038.  04h    DWORD    (ret) handle identifying context
  3039.  08h    DWORD    (call) address of Publisher string
  3040.  0Ch    DWORD    (call) address of Product string
  3041.  10h    DWORD    (call) address of Version string
  3042.  14h    DWORD    units required
  3043.  18h    DWORD    address of comment string
  3044.  1Ch    DWORD    address of SLSCHALLENGE structure (see #2076)
  3045.  
  3046. Format of License Service SLSCHALLENGE structure:
  3047. Offset    Size    Description    (Table 2076)
  3048.  00h    DWORD    algorithm (currently always 1)
  3049.  04h    DWORD    secret to be challenged (1-255)
  3050.  08h    DWORD    size of challenge in bytes (1-255)
  3051.  0Ch  N BYTEs    challenge data
  3052. --------N-2F7002-----------------------------
  3053. INT 2F - License Service API - RELEASE LICENSE
  3054.     AX = 7002h
  3055.     CX = license server index (0000h to 001Fh)
  3056.     DS:DX -> SLSRELEASE structure (see #2077)
  3057.     ES:BX = provider specific handle for the license context
  3058. Return: AL = status
  3059.         00h not installed
  3060.         FFh installed
  3061. SeeAlso: AX=7001h,AX=7005h
  3062.  
  3063. Format of License Service SLSRELEASE structure:
  3064. Offset    Size    Description    (Table 2077)
  3065.  00h    DWORD    handle indentifying license context
  3066.  04h    DWORD    total units consumed
  3067.  08h    DWORD    address of comment string
  3068. --------N-2F7003-----------------------------
  3069. INT 2F - License Service API - UPDATE
  3070.     AX = 7003h
  3071.     CX = license server index (0000h to 001Fh)
  3072.     DS:DX -> SLSUPDATE structure (see #2078)
  3073.     ES:BX = provider specific handle for the license context
  3074. Return: AL = status
  3075.         00h not installed
  3076.         FFh installed
  3077. SeeAlso: AX=7004h,AX=7005h
  3078.  
  3079. Format of License Service SLSUPDATE structure:
  3080. Offset    Size    Description    (Table 2078)
  3081.  00h    DWORD    (ret) status code
  3082.  04h    DWORD    (call) handle identifying license context
  3083.  08h    DWORD    (call) total units consumed
  3084.  0Ch    DWORD    additional units required
  3085.  10h    DWORD    address of comment string
  3086.  14h    DWORD    address of SLSCHALLENGE structure (see #2076)
  3087. --------N-2F7004-----------------------------
  3088. INT 2F - License Service API - GET ERROR
  3089.     AX = 7004h
  3090.     CX = license server index (0000h to 001Fh)
  3091.     DS:DX -> SLSGETERROR structure (see #2079)
  3092.     ES:BX = provider specific handle for the license context
  3093. Return: AL = status
  3094.         00h not installed
  3095.         FFh installed
  3096. SeeAlso: AX=7000h,AX=7001h
  3097.  
  3098. Format of License Service SLSGETERROR structure:
  3099. Offset    Size    Description    (Table 2079)
  3100.  00h    DWORD    (ret) status code
  3101.  04h    DWORD    handle identifying license context
  3102.  08h    DWORD    error code
  3103.  0Ch    DWORD    buffer size in bytes
  3104.  10h  N BYTEs    data buffer
  3105. --------N-2F7005-----------------------------
  3106. INT 2F - License Service API - QUERY LICENSE
  3107.     AX = 7005h
  3108.     CX = license server index (0000h to 001Fh)
  3109.     DS:DX -> SLSQUERY structure (see #2080)
  3110.     ES:BX = provider specific handle for the license context
  3111. Return: AL = status
  3112.         00h not installed
  3113.         FFh installed
  3114. SeeAlso: AX=7001h,AX=7002h
  3115.  
  3116. Format of License Service SLSQUERY structure:
  3117. Offset    Size    Description    (Table 2080)
  3118.  00h    DWORD    (ret) status code
  3119.  04h    DWORD    handle identifying license context
  3120.  08h    DWORD    information index
  3121.  0Ch    DWORD    buffer size in bytes
  3122.  10h  N BYTEs    data buffer
  3123. --------K-2F7041BX4B70-----------------------
  3124. INT 2F U - HP 200LX - KEY200 - INSTALLATION CHECK
  3125.     AX = 7041h
  3126.     BX = 4B70h
  3127. Return: BX = 7965h if keyboard remapper KEY200.COM installed
  3128. --------d-2F7200-----------------------------
  3129. INT 2F - SRDISK v1.30+ - INSTALLATION CHECK
  3130.     AX = 7200h
  3131. Return: AL = FFh if installed
  3132.         ES = segment of device driver header (see #2081)
  3133. Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
  3134. SeeAlso: AX=7201h
  3135.  
  3136. Format of SRDISK device driver header:
  3137. Offset    Size    Description    (Table 2081)
  3138.  00h 10 BYTEs    same as standard device driver header
  3139.           (see #0953 at INT 21/AH=52h)
  3140.  0Ah    BYTE    number of subunits (drives) supported by driver
  3141.  0Bh  3 BYTEs    signature "SRD"
  3142.  0Eh  4 BYTEs    memory type string ("XMS "/"EMS ")
  3143.  12h  4 BYTEs    ASCII driver version string "N.NN"
  3144.  16h    BYTE    00h
  3145.  17h    BYTE    configuration format version (currently 00h or 01h)
  3146.  18h    WORD    offset of drive configuration data
  3147. SeeAlso: #0953
  3148. --------d-2F7201-----------------------------
  3149. INT 2F - SRDISK v2.02 - GET CODE/DATA SEGMENT
  3150.     AX = 7201h
  3151. Return: AL = FFh if installed
  3152.         ES = segment of device driver header (see #2081)
  3153. Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
  3154. SeeAlso: AX=7200h
  3155. --------N-2F7A00-----------------------------
  3156. INT 2F - Novell NetWare - LOW-LEVEL API (IPX) INSTALLATION CHECK
  3157.     AX = 7A00h
  3158. Return: AL = status
  3159.         00h not installed
  3160.         FFh installed
  3161.         ES:DI -> FAR entry point for routines accessed exclusively
  3162.               through INT 7A in NetWare versions through 2.0a.
  3163.               Call with same values as INT 7A
  3164.         ES:BX -> two bytes containing IPX major/minor version
  3165.             (IPXODI v2.12; BX unchanged by older IPX drivers)
  3166. SeeAlso: AX=7AFFh/BX=0000h,AX=D800h,INT 64"Novell",INT 7A"Novell"
  3167. --------N-2F7A10-----------------------------
  3168. INT 2F U - Novell NetWare - TBMI v1.1+ - GET TBMI STATUS
  3169.     AX = 7A10h
  3170. Return: DH = major TBMI version number
  3171.     DL = minor TBMI version number (01h for v1.1)
  3172.     CX = segment address of TBMI resident part
  3173.     BX = status word of TBMI (see #2082)
  3174. Note:    TBMI is the Task-Switched Buffer Manager Interface
  3175. SeeAlso: AX=7A11h,AX=7A12h,AX=7A13h,AX=7A14h
  3176.  
  3177. Bitfields for NetWare TBMI status word:
  3178. Bit(s)    Description    (Table 2082)
  3179.  0    INT2F intercepted by TBMI
  3180.  1    INT7A intercepted by TBMI
  3181.  2    INT64 intercepted by TBMI
  3182.  3-14    reserved or unused ???
  3183.  15    outstanding task ID was detected
  3184. --------N-2F7A11-----------------------------
  3185. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT2F HANDLERS
  3186.     AX = 7A11h
  3187. Return: ES:BX -> old INT 2F handler
  3188.     DS:DX -> TBMI INT 2F handler
  3189. SeeAlso: AX=7A10h,AX=7A12h,AX=7A13h,AX=7A1Ah
  3190. --------N-2F7A12-----------------------------
  3191. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT64 HANDLERS
  3192.     AX = 7A12h
  3193. Return: ES:BX -> old INT 64 handler
  3194.     DS:DX -> TBMI INT 64 handler
  3195. SeeAlso: AX=7A10h,AX=7A11h,AX=7A13h
  3196. --------N-2F7A13-----------------------------
  3197. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT7A HANDLERS
  3198.     AX = 7A13h
  3199. Return: ES:BX -> old INT 7A handler
  3200.     DS:DX -> TBMI INT 7A handler
  3201. SeeAlso: AX=7A10h,AX=7A11h,AX=7A12h
  3202. --------N-2F7A14-----------------------------
  3203. INT 2F U - Novell NetWare - TBMI v1.1+ - GET STATISTICS
  3204.     AX = 7A14h
  3205.     CX = statistic to retrieve
  3206.         0000h available diagnostic functions???
  3207.         Return: CX = maximum available function??? (000Ch for v2.0)
  3208.         0001h buffers in use
  3209.         Return: CX = TBMI buffers currently in use
  3210.         0002h maximum buffers used
  3211.         Return: CX = maximum number of buffers ever in use
  3212.         0003h unavailable buffers
  3213.         Return: CX = count of unavailable TBMI buffers
  3214.         0004h old interrupt usage
  3215.         Return: CX = TBMI accesses to intercepted old vectors INT 2F,
  3216.                   INT 64, and INT 7A
  3217.         0005h far call usage
  3218.         Return: CX = TBMI accesses to IPX/SPX far call handler (not
  3219.                   including internal accesses)
  3220.         0006h task buffering
  3221.         Return: CX = TBMI task buffering status (enabled/disabled or
  3222.                   disable/enable switch count???)
  3223.         0007h current task ID
  3224.         Return: CX = TBMI current task ID number (0000h if ???)
  3225.         0008h outstanding ID count
  3226.         Return: CX = number of outstanding TBMI IDs
  3227.         0009h configured ECBs
  3228.         Return: CX = number of TBMI Event Control Blocks configured
  3229.         000Ah configured data ECBs
  3230.         Return: CX = number of TBMI data ECBs configured
  3231.         000Bh configured sockets
  3232.         Return: CX = number of TBMI sockets configured (from NETCFG)
  3233.         000Ch current sockets
  3234.         Return: CX = number of TBMI sockets currently in use
  3235. Return: BX = maximum supported subfunction (000Ch)
  3236. SeeAlso: AX=7A10h
  3237. --------N-2F7A15-----------------------------
  3238. INT 2F OU - Novell NetWare - TBMI v1.1 only - RESET ???
  3239.     AX = 7A15h
  3240. Return: BX = new value of ???
  3241. Desc:    set ??? to its default value
  3242. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  3243. SeeAlso: AX=7A17h
  3244. --------N-2F7A16-----------------------------
  3245. INT 2F OU - Novell NetWare - TBMI v1.1 only - ???
  3246.     AX = 7A16h
  3247.     CX = ???
  3248.     ???
  3249. Return: ???
  3250. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  3251. --------N-2F7A17-----------------------------
  3252. INT 2F OU - Novell NetWare - TBMI v1.1 only - ???
  3253.     AX = 7A17h
  3254.     ???
  3255. Return: BX = old value of ???
  3256.     CX = new value of ???
  3257. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  3258. SeeAlso: AX=7A15h
  3259. --------N-2F7A18-----------------------------
  3260. INT 2F U - Novell NetWare - TASKID v1.0 - INSTALLATION CHECK
  3261.     AX = 7A18h
  3262. Return: AL = FFh if installed
  3263.         BX = configuration flags (see #2083)
  3264.         CX = resident code segment
  3265. SeeAlso: AX=7A10h
  3266.  
  3267. Bitfields for NetWare TASKID configuration flags:
  3268. Bit(s)    Description    (Table 2083)
  3269.  0    INT 2F hooked
  3270.  3    INT 08 hooked
  3271.  other    unused
  3272. --------N-2F7A19-----------------------------
  3273. INT 2F U - Novell NetWare - TASKID v1.0 - GET INT 08 HANDLERS
  3274.     AX = 7A19h
  3275. Return: AL = FFh
  3276.     DS:DX -> TASKID INT 08 handler
  3277.     ES:BX -> original INT 08 handler
  3278. --------N-2F7A1A-----------------------------
  3279. INT 2F U - Novell NetWare - TASKID v1.0 - GET INT 2F HANDLERS
  3280.     AX = 7A1Ah
  3281. Return: AL = FFh
  3282.     DX:DX -> TASKID INT 2F handler
  3283.     ES:BX -> original INT 2F handler
  3284. SeeAlso: AX=7A11h,AX=7A19h
  3285. --------N-2F7A1B-----------------------------
  3286. INT 2F U - Novell NetWare - TASKID v1.0 - GET DIAGNOSTICS INFORMATION
  3287.     AX = 7A1Bh
  3288.     CX = desired information
  3289.         0000h supported functions
  3290.         0001h TASKID ID number
  3291.         Return: CX = ID number
  3292.         0002h set-ID count
  3293.         Return: CX = ID set count
  3294. Return: AL = FFh
  3295.     BX = highest supported subfunction number (0002h)
  3296. SeeAlso: AX=7A14h,AX=7A18h
  3297. --------N-2F7A1C-----------------------------
  3298. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  3299.     AX = 7A1Ch
  3300.     BP = ???
  3301.     CX:DX = ???
  3302. Return: AX = 70FFh
  3303. --------N-2F7A1D-----------------------------
  3304. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  3305.     AX = 7A1Dh
  3306.     ???
  3307. Return: ES = ???
  3308.     ???
  3309.     SI destroyed
  3310. --------N-2F7A1E-----------------------------
  3311. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  3312.     AX = 7A1Eh
  3313.     ES:SI -> ???
  3314.     ???
  3315. Return: ???
  3316. --------N-2F7A20BX0000-----------------------
  3317. INT 2F - Novell NetWare - Adv NetWare 4.0 DOS Requester - GET VLM CALL ADDRESS
  3318.     AX = 7A20h
  3319.     BX = 0000h
  3320. Return: AX = 0000h on success (installed)
  3321.         ES:BX -> far call address for DOS Requester (see #2084)
  3322. Notes:    the DOS Requester replaces the NetWare Shell (ANETx, NETx) on
  3323.       NetWare LAN's as of the release of Advanced NetWare 4.0 (1993).  It
  3324.       is backward compatible with NetWare 2.1x through 3.11 servers as
  3325.       well.     Note that there was a NetWare 4.0 in the early 1980's, which
  3326.       can cause confusion.
  3327.     this call is used as the installation check by VLM.EXE, which is the
  3328.       loader for all the modules of the DOS Requester
  3329.     .VLMs are standard old .EXE format executables whose normal entry point
  3330.       merely terminates to prevent loading from the command line.  The
  3331.       real entry point is found by looking at the VLM header at the
  3332.       beginning of the load image (see #2087)
  3333. Index:    installation check;NetWare 4.0 DOS Requester
  3334.  
  3335. (Table 2084)
  3336. Call DOS Requester entry point with:
  3337.     STACK:    WORD    destination function
  3338.         WORD    destination VLM ID (see #2086)
  3339.         WORD    source VLM ID (0000h = application program)
  3340.     registers as appropriate for function
  3341. Return: AX = status code (0000h,8811h,8846h,8848h,8853h) (see #2085)
  3342.     other registers as appropriate for function
  3343.     STACK popped
  3344.     BP destroyed
  3345.  
  3346. (Table 2085)
  3347. Values for VLM status code:
  3348.  0000h    successful
  3349.  88xxh    error generated by requester
  3350.  8801h    invalid or non-attached connection handle
  3351.  8803h    cannot add CDS
  3352.  8804h    bad path
  3353.  8805h    error sending or receiving NCP packets
  3354.  8811h    nonexistent function called
  3355.  8836h    attempted function with invalid parameter
  3356.  8846h    ???
  3357.  8848h    non-loaded or nonexistent VLM called
  3358.  884Dh    no more SFT entries (too many handles)
  3359.  8850h    too many reply fragments
  3360.  8853h    ???
  3361.  89xxh    error generated by server
  3362.     low byte = return code from server (see also #1221,#1255)
  3363.  8900h    server successful
  3364.  8901h    out of disk space
  3365.  897Eh    NCP boundary check failed
  3366.  897Fh    ???
  3367.  8980h    lock failed; file in use
  3368.  8981h    out of handles
  3369.  8982h    no open privileges
  3370.  8983h    hard (non-correctable) I/O error
  3371.  8984h    no creation privileges
  3372.  8985h    no create/delete privileges
  3373.  8986h    attempted to create a file which already exists read-only
  3374.  8987h    filename error during creation (wildcards in name)
  3375.  8988h    invalid file handle
  3376.  8989h    no search privileges
  3377.  898Ah    no deletion privileges
  3378.  898Bh    no rename privileges
  3379.  898Ch    no modify privileges
  3380.  898Dh    some affected files are in use
  3381.  898Eh    all affected files are in use
  3382.  898Fh    some affected files are read-only
  3383.  8990h    all affected files are read-only; volume read-only
  3384.  8991h    some files could not be renamed because target names already exist
  3385.  8992h    all affected names exist
  3386.  8993h    no read privileges
  3387.  8994h    no write privileges
  3388.  8995h    file detached
  3389.  8996h    server out of memory
  3390.  8997h    no disk space for spool file
  3391.  8998h    disk map error; volume does not exist
  3392.  8999h    directory full
  3393.  899Ah    attempt to rename across volumes
  3394.  899Bh    bad directory handle
  3395.  899Ch    invalid path; no more trustees
  3396.  899Dh    no directory handles
  3397.  899Eh    bad filename
  3398.  899Fh    directory active
  3399.  89A0h    directory not empty
  3400.  89A1h    directory I/O error
  3401.  89A2h    I/O lock error
  3402.  89A3h-89BEh ???
  3403.  89BFh    invalid name space
  3404.  89C0h    no account privileges
  3405.  89C1h    no account balance
  3406.  89C2h    credit limit exceeded
  3407.  89C4h    account disabled
  3408.  89C5h    login lockout (intruder detection activated)
  3409.  89C6h    no console rights
  3410.  89C7h-89CFh
  3411.  89D0h    queue error
  3412.  89D1h    no queue
  3413.  89D2h    no queue server
  3414.  89D3h    no queue rights
  3415.  89D4h    queue full
  3416.  89D5h    no queue job
  3417.  89D6h    no job rights; unencrypted password
  3418.  89D7h    queue servicing error; duplicate password; bad account
  3419.  89D8h    queue not active; password too short
  3420.  89D9h    station not queue server; maximum logins exceeded
  3421.  89DAh    queue halted; bad login time
  3422.  89DBh    maximum queue servers; unauthorized login station
  3423.  89DCh    account disabled or expired
  3424.  89DEh    password expired (all grace logins used up)
  3425.  89DFh    password expired but login allowed (grace login)
  3426.  89E0h-89E6h ???
  3427.  89E7h    no disk track
  3428.  89E8h    property is not an item property; write to group
  3429.  89E9h    member exists
  3430.  89EAh    no such member
  3431.  89EBh    property is not a set property
  3432.  89ECh    no such set
  3433.  89EDh    property exists
  3434.  89EEh    object exists
  3435.  89EFh    illegal name
  3436.  89F0h    illegal wildcard
  3437.  89F1h    invalid bindery security level
  3438.  89F2h    not allowed to read object
  3439.  89F3h    not allowed to write/rename object
  3440.  89F4h    not allowed to delete object
  3441.  89F5h    not allowed to create object
  3442.  89F6h    not allowed to delete property
  3443.  89F7h    not allowed to create property; attempt to use non-local drive
  3444.  89F8h    not allowed to write property; already attached to server
  3445.  89F9h    not allowed to read property; no free connection slots
  3446.  89FAh    temporary remap error; no more server slots
  3447.  89FBh    no such property; invalid parameters
  3448.  89FCh    no such object; internet packet request canceled; unknown file server
  3449.  89FDh    bad station number; lock collision
  3450.  89FEh    directory locked; bindery locked; timeout
  3451.  89FFh    general error; hard error; lock error
  3452. Note:    some server-generated error codes have multiple interpretations; use
  3453.       the one appropriate to the failing call
  3454.  
  3455. (Table 2086)
  3456. Values for VLM identifier:
  3457.  0001h    VLM.EXE        Virtual Loadable Modules manager (see also #2089)
  3458.  0010h    CONN.VLM    connection table manager (see also #2090)
  3459.  0020h    TRAN.VLM    transport protocol multiplexor (see also #2094)
  3460.  0021h    IPXNCP.VLM    transport protocol implementation using IPX (see #2096)
  3461.  0022h    TCPNCP.VLM    TCP/IP transport
  3462.  0030h    NWP.VLM        NetWare protocol multiplexor (see also #2098)
  3463.  0031h    BIND.VLM    bindery
  3464.  0032h    NDS.VLM        NetWare Directory Services (see also #2099)
  3465.  0033h    PNW.VLM        Personal NetWare
  3466.  0034h    RSA.VLM        RSA encryption for directory services re-authentication
  3467.  0040h    REDIR.VLM    DOS redirector (see also #2101)
  3468.  0041h    FIO.VLM        file I/O (see also #2103)
  3469.  0042h    PRINT.VLM    printer redirector (see also #2105)
  3470.  0043h    GENERAL.VLM    misc functions for NETx and REDIR (see also #2107)
  3471.  0050h    NETX.VLM    NetWare shell compatibility (see also #2109)
  3472.  0060h    AUTO.VLM    auto-reconnect/auto-retry
  3473.  0061h    SECURITY.VLM    enhanced security module (see #2110)
  3474.  0100h    NMR.VLM        NetWare management responder
  3475.  09F2h    DRVPRN.VLM    Desktop SNMP Services - Drive/Printer Mappings
  3476.  09F5h    SAA.VLM        SAA client API for Netware
  3477.  09F6h    IPXMIB.VLM    SNMP IPX-monitoring Module???
  3478.  09F7h    PNWMIB.VLM    Personal Netware SNMP Instrumentation Module
  3479.  09F8h    PNWTRAP.VLM    Personal Netware SNMP Trap Module
  3480.  09F9h    MIB2PROT.VLM    MIB-II Protocol Groups
  3481.  09FAh    MIB2IF.VLM    MIB-II Interfaces Group
  3482.  09FBh    NVT.VLM        ???
  3483.  09FCh    WSTRAP.VLM    Desktop SNMP Services - Trap Module
  3484.  09FDh    WSREG.VLM    Desktop SNMP Services - Registration Module
  3485.  09FEh    WSASN1.VLM    Desktop SNMP Services - ASN.1 Module
  3486.  09FFh    WSSNMP.VLM    Desktop SNMP Services - Agent Module
  3487.  
  3488. Format of VLM header:
  3489. Offset    Size    Description    (Table 2087)
  3490.  00h    DWORD    -> initialization entry point
  3491.  04h    DWORD    -> VLM API entry point
  3492.  08h    DWORD    -> ??? entry point
  3493.  0Ch    DWORD    -> ??? entry point
  3494.  10h    DWORD    -> ??? entry point
  3495.     ...
  3496.  var    DWORD    00000000h (end of entry point list)
  3497.       4 BYTEs    signature "NVlm"
  3498.     WORD    VLM identifier (see #2086)
  3499. ---v1.20+ ---
  3500.  1Eh    WORD    ???
  3501.  20h    WORD    Transient Switch Count
  3502.  22h    WORD    VLM Call Count
  3503.  24h    WORD    Offset ControlBlocks (See #2088)
  3504.  26h    WORD    Current VLMID
  3505.  28h    BYTE    Memory Type
  3506.         00h=Conventional 02h=EMS 04h=XMS
  3507.  29h    BYTE    Modules Loaded
  3508.  2Ah    WORD    BlockId
  3509.  2Ch    WORD    Transient Block
  3510.  2Eh    WORD    Global Segment
  3511.  30h  3    DWORDs    pointers to AsyncQueue head, tail, and s???
  3512.  3Ch  3    DWORDs    pointers BusyQueue head, tail, and s???
  3513.  48h    WORD    ReEntrance Level
  3514.  4Ah    WORD    Full Map Count
  3515.  4Ch    WORD    ???
  3516.  4Eh 80 BYTEs    ASCIZ configuration file filename
  3517. Note:    the number of entry points in the header is reported as "Func" in the
  3518.       VLM /D display.
  3519.  
  3520. Format of VLM Control Block for VLM v1.20 [array]:
  3521. Offset    Size    Description    (Table 2088)
  3522.  00h    WORD    Flag
  3523.  02h    WORD    VLM Identifier (See #2086)
  3524.  04h    WORD    Func
  3525.  06h    WORD    Maps
  3526.  08h    WORD    number of times called
  3527.  0Ah    WORD    ???
  3528.  0Ch    WORD    Transient Segment
  3529.  0Eh    WORD    Global Segment
  3530.  10h    WORD    Address Low
  3531.  12h    WORD    Address High
  3532.  14h    WORD    TSegSize
  3533.  16h    WORD    GSegSize
  3534.  18h    WORD    SSegSize
  3535.  1Ah    BYTE    VLMName[9] ASCIZ
  3536. Note:    this information is shown in VLM /d under the dashed line. There are
  3537.       as many 35-byte blocks as modules loaded
  3538. SeeAlso: #2087
  3539.  
  3540. (Table 2089)
  3541. Call VLM Manager (VLM.EXE, ID 0001h) with:
  3542. Func    Description/Registers
  3543.  01h    VLM Notify
  3544.     BX = function
  3545.         0000h get version
  3546.         Return: AX = status (see #2085)
  3547.             BX = major version of VLM supported (0001h)
  3548.             CX = minor version of VLM supported (0000h)
  3549.  03h    VLM Statistics
  3550.  04h    VLM internal use
  3551.     BX = function
  3552.         0000h get interrupt vector (calls INT 21/AH=35h)
  3553.         0001h begin critical section (calls INT 2F/AX=1681h)
  3554.         0002h end critical section (calls INT 2F/AX=1682h)
  3555.         0003h ???
  3556.  
  3557. (Table 2090)
  3558. Call Connection Manager (CONN.VLM, ID 0010h) with:
  3559. Func    Description/Registers
  3560.  01h    Conn Get Version
  3561.     BX = function
  3562.         0000h get version
  3563.         Return: AX = status (see #2085)
  3564.             BX = major version of VLM supported (0001h)
  3565.             CX = minor version of VLM supported (0000h)
  3566.  03h    Conn Statistics
  3567.     CX = length of buffer
  3568.     ES:DI -> buffer for connection statistics (see #2091)
  3569.     Return: AX = status (0000h successful)
  3570.  04h    Conn Alloc Handle
  3571.     Return: AX = status (0000h successful)
  3572.         CX = connection handle
  3573.  05h    Conn Validate Handle
  3574.     CX = connection handle
  3575.     Return: AX = 0000h if valid handle
  3576.  06h    Conn Free Handle
  3577.     CX = connection handle
  3578.     Return: AX = status (0000h successful)
  3579.  07h    Conn Get Entry Field
  3580.     BH = connection parameter (see #2093)
  3581.     CX = connection handle
  3582.     DX = value if BH is non-array parameter
  3583.     DH = offset in array if BH is array parameter
  3584.     DL = number of bytes to copy if BH is array
  3585.     ES:DI -> return buffer if BH is array
  3586.     Return: AX = 0000h if successful
  3587.         DL/DX = value if non-array parameter
  3588.         DH = maximum number of bytes in buffer if array parameter
  3589.         DL = number of bytes copied if array
  3590.         BX destroyed
  3591.  08h    Conn Set Entry Field
  3592.     BH = connection parameter (see #2093)
  3593.     CX = connection handle
  3594.     DL/DX = value if BH is non-array parameter
  3595.     DH = offset in array if BH is array parameter
  3596.     DL = number of bytes to copy if BH is array
  3597.     DS:SI -> buffer if BH is array
  3598.     Return: AX = 0000h if successful
  3599.         DH = maximum number of bytes in buffer
  3600.         DL = number of bytes copied
  3601.         BX destroyed
  3602.  09h    Conn Reset Entry Field
  3603.     BH = connection parameter (see #2093)
  3604.     CX = connection handle
  3605.     Return: AX = 0000h if successful
  3606.         BX,DX destroyed
  3607.  0Ah    Conn Lookup Handle
  3608.     BL = lookup type (00h equal, 40h not equal)
  3609.     BH = connection parameter (see #2093)
  3610.     CX = connection handle, 0000h if first
  3611.     DL/DX = value if BH is non-array parameter
  3612.     DH = offset in array if BH is array parameter
  3613.     DL = number of bytes to copy if BH is array
  3614.     DS:SI (ES:DI???) -> buffer if BH is array
  3615.     Return: AX = 0000h if successful
  3616.         CX = handle matching given parameters
  3617.  0Dh    Conn Name Lookup
  3618.     CX = connection handle
  3619.     ES:DI -> 49-byte buffer for server name or 0000h:0000h
  3620.     Return: AX = 0000h if successful
  3621.         BX = length of server name
  3622.         ES:DI buffer filled if pointer not 0000h:0000h
  3623.  0Eh    Conn Name To Handle
  3624.     DS:SI -> uppercased server name
  3625.     CX = length of server name, 0000h if ASCIZ name
  3626.     Return: AX = error code or 0000h if successful
  3627.             CX = connection handle if successful
  3628.  0Fh    Conn Get Num Connections
  3629.     Return: AX = status (0000h if successful)
  3630.         DX = number of connections
  3631.         CX = segment of connection table
  3632.             first entry in table (See #2092)
  3633.  
  3634. Format of VLM connection statistics:
  3635. Offset    Size    Description    (Table 2091)
  3636.  00h    WORD    total length of statistics record (including this word)
  3637.  02h    WORD    number of connection handles allocated
  3638.  04h    WORD    average name length (configured in NET.CFG)
  3639.  06h    WORD    maximum number of tasks (configured in NET.CFG)
  3640.  08h    WORD    number of failed "allocate handle" calls
  3641.  0Ah    WORD    number of failed "add name" calls
  3642.  0Ch    WORD    number of failed task calls
  3643. Note:    some versions of the NetWare requester reportedly do not implement
  3644.       this correctly
  3645. SeeAlso: #2090
  3646.  
  3647. Format of NetWare VLM Connection Table [array]:
  3648. Offset    Size    Description    (Table 2092)
  3649.  00h    WORD    Protocol VLMid      0032(NDS) 0031(BIND)        Func 07 equiv.
  3650.                   0033(PNW) 0000(unused)       bh=01h
  3651.  02h    BYTE    (connection status)
  3652.         bit 6: connection locked               bh=16h
  3653.         bit 5: authenticated                   bh=03h
  3654.         bit 4: permanent                   bh=02h
  3655.         bit 2: broadcast msg waiting               bh=12h
  3656.  03h    BYTE    (connection capabilities)
  3657.         bit 5: Large Internet Packets               none
  3658.         bit 3: Packet Burst Reset               bh=07h
  3659.         bit 2: Max I/O                       bh=06h
  3660.         bit 1: SFT3 change                   bh=05h
  3661.         bit 0: Packet Burst Support               bh=04h
  3662.  04h    WORD    reference count                       bh=09h
  3663.  06h    WORD    soft resource count                   bh=15h
  3664.  08h    BYTE    NCP Order Number                   bh=0Eh
  3665.  09h    BYTE    Server security options                   bh=14h
  3666.         bit 0: CRC enabled
  3667.         bit 1: packet signing required
  3668.         bit 5: packet signing enabled
  3669.  0Ah    BYTE    OS Major Version                   bh=08h
  3670.  0Bh    BYTE    OS Minor Version                   bh=08h
  3671.  0Ch    WORD    Hops to Server                       bh=0Ah
  3672.  0Eh    WORD    Maximum Packet Size for this connection           bh=0Bh
  3673.  10h    WORD    LIP Parameters                       bh=13h
  3674.  12h    WORD    NCP Request Type                   bh=10h
  3675.  14h    BYTE    NCP Sequence                       bh=0Ch
  3676.  15h    WORD    Connection Number                   bh=0Dh
  3677.  17h    BYTE    ???                           none
  3678.  18h    WORD    Transport VLMid 21(IPXNCP) 22(TCPNCP)           bh=0Fh
  3679.  1Ah    BYTE    Node Address[4]                       bh=11h
  3680.  1Eh    BYTE    Network[6]                       bh=11h
  3681.  24h    BYTE    Socket[2]                       bh=11h
  3682.  26h    BYTE    Local Target[6]                       bh=11h
  3683.  2Ch    WORD    Round Trip Time                       bh=11h
  3684.  2Eh    WORD    ???                           none
  3685. SeeAlso: #2090
  3686.  
  3687. (Table 2093)
  3688. Values for NetWare Connection Manager CEI (Connection Entry Information):
  3689.  number    flags    description
  3690.  00h    FR    error
  3691.  01h    WL    VLM id of transport protocol (NDS/BIND/PNW)
  3692.         00h = wildcard
  3693.  02h    FR    permanent flag (01h if connection is permanent)
  3694.  03h    F    authenticated flag (01h if connection is authenticated)
  3695.  04h    F    packet burst supported
  3696.  05h    FR    SFT3 change status
  3697.  06h    FR    connection needs maximum I/O transmission
  3698.  07h    FR    packet burst reset needed
  3699.  08h    W    server version
  3700.  09h    W    reference count (tasks using connection, 00h = dynamic)
  3701.  0Ah    W    distance to server associated with connection
  3702.  0Bh    W    maximum packet size supported by transport protocol
  3703.  0Ch    B    NCP sequence number
  3704.  0Dh    W    connection number
  3705.  0Eh    B    NCP order number
  3706.  0Fh    WL    VLM id for transport protocol
  3707.         00h = wildcard, 21h = IPX, 22h = TCP
  3708.  10h    W    NCP request type
  3709.  11h    A    transport specific buffer
  3710.         12 byte server address
  3711.         6 byte    router address
  3712.         2 byte round trip time
  3713.  12h    FR    broadcast message waiting
  3714.  13h    W    large internet packets supported
  3715.  14h    B    security options
  3716.         bit 0: CRC enabled
  3717.         bit 1: packet signing enabled
  3718.         bit 5: packet signing active
  3719.  15h    W    soft resource count
  3720.  16h    FR    connection locked
  3721. Note:    flag meanings
  3722.         F=flag value
  3723.         B=byte value
  3724.         W=word value
  3725.         A=array
  3726.         R=resettable
  3727.         L=settable only before authentication
  3728.         others=read only
  3729. SeeAlso: #2090
  3730.  
  3731. (Table 2094)
  3732. Call TRAN.VLM (VLM ID 0020h) with:
  3733. Func    Description/Registers
  3734.  01h    TRAN Get Version
  3735.     BX = function
  3736.         0000h get version
  3737.         Return: AX = status (see #2085)
  3738.             BX = major version of VLM supported (0001h)
  3739.             CX = minor version of VLM supported (0000h)
  3740.  03h    TRAN Statistics
  3741.  06h    TRAN Request Reply (see INT 21/AH=F2h)
  3742.     AL = request code (see #1391 at INT 21/AH=F2h)
  3743.     BH = error handler flag
  3744.         00h default error handler
  3745.         01h return network errors to caller
  3746.         02h handle network errors in requester
  3747.     BL = request list length (max 5 fragments) (see #2095)
  3748.     CX = connection handle
  3749.     DH = 00h (reserved)
  3750.     DL = reply list length (max 5 fragments) (see #2095)
  3751.     DS:SI -> address list (each element is DWORD address + WORD length)
  3752.     ES:DI -> address list
  3753.     Return: AX = error code, 0000h if successful
  3754.         BX,DX destroyed
  3755.         reply buffer updated if successful
  3756.  08h    TRAN Schedule/Cancel Event
  3757.  09h    TRAN Get Max Phys Size
  3758.     ??? = subfunction
  3759.         00h get maximum node size
  3760.         01h get maximum route size to specified server
  3761.  0Ah    TRAN Broadcast Mux
  3762.  
  3763. Format of TRAN.VLM request/reply fragment descriptor (array):
  3764. Offset    Size    Description    (Table 2095)
  3765.  00h    DWORD    address of buffer
  3766.  04h    WORD    length of buffer
  3767.  
  3768. (Table 2096)
  3769. Call IPXNCP.VLM (VLM ID 0021h) with:
  3770. Func    Description/Registers
  3771.  01h    IPX Get Version
  3772.     BX = function
  3773.         0000h get version
  3774.         Return: AX = status (see #2085)
  3775.             BX = major version of VLM supported (0001h)
  3776.             CX = minor version of VLM supported (0000h)
  3777.  03h    IPX Statistics
  3778.     CX = length of buffer
  3779.     ES:DI -> buffer for statistics (see #2097)
  3780.     Return:    AX = status (see #2085)
  3781.  06h    IPXNCP Request Reply???
  3782.     functionally equivalent to Tran Request Reply???
  3783.  
  3784. Format of NetWare IPX statistics:
  3785. Offset    Size    Description    (Table 2097)
  3786.  00h    WORD    size of statistics, including this word
  3787.  02h    DWORD    number of TRAN Request Reply calls made
  3788.  06h    WORD    number of user aborts
  3789.  08h    WORD    number of user retries
  3790.  0Ah    WORD    IPX receive errors
  3791.  0Ch    WORD    IPX send errors
  3792.  0Eh    WORD    number of unrecognized responses
  3793.  10h    WORD    number of bad connection numbers in requests
  3794.  12h    WORD    number of bad sequence responses
  3795.  14h    WORD    receive buffer overflows
  3796.  16h    WORD    number of times route to attached server was lost
  3797.  18h    WORD    number of times server responded "busy"
  3798.  1Ah    WORD    number of unknown "NCPRepCompCode" values
  3799.  1Ch    WORD    number of bad connection numbers in responses
  3800.  1Eh    WORD    padding for NETX compatibility
  3801.  20h    WORD    padding for NETX compatibility
  3802.  22h    WORD    number of attach requests to server without route
  3803.  24h    WORD    number of times server responded to attach without slot
  3804.  26h    WORD    number of times a server went down during a request
  3805.  28h    DWORD    same-server optimizations
  3806.  2Ch    WORD    local route changes
  3807.  2Eh    WORD    IPX CRC errors
  3808.  30h    WORD    number of user fails
  3809.  32h    BYTE    flag: CRCs enabled
  3810.  33h    BYTE    flag: LIP enabled
  3811.  34h    BYTE    flag: configurable NET error handler
  3812. SeeAlso: #2096
  3813.  
  3814. (Table 2098)
  3815. Call NWP.VLM (VLM ID 0030h) with:
  3816. Func    Description/Registers
  3817.  01h    NWP Get Version
  3818.     BX = function
  3819.         0000h get version
  3820.         Return: AX = status (see #2085)
  3821.             BX = major version of VLM supported (0001h)
  3822.             CX = minor version of VLM supported (0000h)
  3823.  03h    NWP Statistics
  3824.  04h    NWP Connect
  3825.  05h    NWP Disconnect
  3826.  06h    NWP Attach
  3827.  08h    NWP Login
  3828.  09h    NWP Logout
  3829.  0Ah    NWP Get Bindery Object/Get Message Handler
  3830.     BX = subfunction
  3831.         0002h set workstation's broadcast message mode
  3832.         0003h get object ID for object name
  3833.         0004h get object name for object ID
  3834.         0005h retrieve broadcast message
  3835.  0Ch    NWP context (passed through to NDS.VLM's function 0Ch) (see #2099)
  3836.  0Eh    NWP Ordered Send To All
  3837.  0Fh    NWP Preferred Handler
  3838.     BX = subfunction
  3839.         0000h get preferred connection name
  3840.         DX = VLM ID (NDS/BIND/PNW)
  3841.         ES:DI -> 49-byte buffer for connection name
  3842.         Return: ES:DI buffer filled
  3843.         0001h set preferred connection name
  3844.         DX = VLM ID (NDS/BIND/PNW)
  3845.         CX = length of connection name (may be 0000h, max 48)
  3846.         DS:SI -> name of preferred connection
  3847.         0002h get preferred connection ID
  3848.         DX = VLM ID (NDS/BIND/PNW)
  3849.         Return: AX = status
  3850.             CX = connection handle if successful
  3851.         0003h get server address
  3852.         CX = connection handle or 0000h
  3853.         DS:SI -> name to be resolved
  3854.         ES:DI -> 12-byte buffer for server address
  3855.  10h    NWP ???
  3856.     BX = subfunction
  3857.         0001h get security flags (see also INT 21/AX=B301h)
  3858.         Return: BX:CX indicates signature level
  3859.                 = 0100h:0000h if signature level=0
  3860.                 = 0300h:0000h if signature level=1
  3861.                 = 0302h:0000h if signature level=2
  3862.                 = 0302h:0202h if signature level=3
  3863.         0002h create session keys (see also INT 21/AX=B302h)
  3864.         CX = server connection handle
  3865.         DS:SI -> 24-byte input buffer
  3866.         0004h set security flags (see also INT 21/AX=B304h)
  3867.         BL:CL = new flags
  3868.         0006h renegotiate security level (see also INT 21/AX=B306h)
  3869.         CX = server connection number (01h-08h)
  3870.  
  3871. (Table 2099)
  3872. Call NDS.VLM (VLM ID 0032h) with:
  3873. Func    Description/Registers
  3874.  01h    NDS Get Version
  3875.     BX = function
  3876.         0000h get version
  3877.         Return: AX = status (see #2085)
  3878.             BX = major version of VLM supported (0001h)
  3879.             CX = minor version of VLM supported (0000h)
  3880.  03h    NDS Statistics
  3881.  06h    NDS Attach
  3882.     CX = allocated connection handle
  3883.     DS:SI -> server address
  3884.  08h    NDS Fragment Requst
  3885.     Return: AX = 8836h (invalid parameter)
  3886.     Note:    this function was documented but does not work
  3887.  0Ch    NDS context
  3888.     BX = subfunction
  3889.         0000h get default name context
  3890.         CX = length of buffer for default context
  3891.         ES:DI -> buffer to receive name
  3892.         Return: ES:DI buffer filled
  3893.         0001h set default context
  3894.         CX = length of new default context name
  3895.         DS:SI -> context name
  3896.         0002h read from TDS
  3897.         CX = reply buffer length
  3898.         DX = 0110h ???
  3899.         SI = offset in TDS
  3900.         ES:DI -> reply buffer
  3901.         0003h write to TDS
  3902.         0005h "NWDSChangeResourceConnection/Lock Connection"
  3903.         CX = connection handle
  3904.         DL = subfunction (00h-09h)
  3905.             04h = NWDSChangeResourceOnConnection
  3906.             07h = NWDSChangeResourceOnConnection
  3907.             08h = NWDSLockConnection
  3908.         0006h NDS change connection state (internal)
  3909.         CX = connection handle
  3910.         AL = 00h or 01h
  3911.         0007h "NWDSSetMonitoredConnection"
  3912.         AX = subfunction
  3913.             0001h get monitored connection
  3914.             Return: CX = connection handle???
  3915.             0002h set monitored connection
  3916.             CX = connection handle???
  3917.         0008h send NDS request
  3918.         AX = NDS function
  3919.         CX = connection handle
  3920.         DS:SI -> request buffer descriptor (see #2100)
  3921.         ES:DI -> reply buffer descriptor (see #2100)
  3922.         000Ah set NDS CEI Info
  3923.         DL = buffer length
  3924.         DS:SI -> input buffer
  3925.  
  3926. Format of NetWare NDS request/reply buffer descriptor:
  3927. Offset    Size    Description    (Table 2100)
  3928.  00h    DWORD    -> buffer
  3929.  04h    WORD    length of buffer in bytes
  3930. SeeAlso: #2099
  3931.  
  3932. (Table 2101)
  3933. Call REDIR.VLM (VLM ID 0040h) with:
  3934. Func    Description/Registers
  3935.  01h    Redir Get Version
  3936.     BX = function
  3937.         0000h get version
  3938.         Return: AX = status (see #2085)
  3939.             BX = major version of VLM supported (0001h)
  3940.             CX = minor version of VLM supported (0000h)
  3941.  03h    Redir Statistics
  3942.  04h    Redir Build SFT (see INT 21/AH=B4h"NetWare")
  3943.     CX = connection handle
  3944.     ES:DI -> SFT build request (see #2102)
  3945.     Return: AX = 0000h if successful
  3946.             BX = DOS file handle
  3947.  05h    Redir DOS To NW Handle
  3948.  08h    Redir Specific
  3949.     BX = 0000h get item
  3950.         DS:SI -> ASCIZ string "LPTx" (x='1'-'9') or drive spec ("d:")
  3951.         ES:DI -> 512-byte reply buffer for
  3952.               "\\server\resource",00h,"path",00h
  3953.  
  3954. Format of NetWare SFT build request:
  3955. Offset    Size    Description    (Table 2102)
  3956.  00h  6 BYTEs    NetWare handle
  3957.  06h    WORD    reserved for internal use
  3958.  08h 14 BYTEs    ASCIZ filename
  3959.  16h    BYTE    DOS file attributes
  3960.         bit 7: file is shareable
  3961.  17h    BYTE    reserved
  3962.  18h    LONG    file size
  3963.  1Ch    WORD    creation date
  3964.  1Eh    WORD    last access date
  3965.  20h    WORD    last update date
  3966.  22h    WORD    last update time
  3967.  
  3968. (Table 2103)
  3969. Call File I/O FIO.VLM (VLM ID 0041h) with:
  3970. Func    Description/Registers
  3971.  01h    FIO Get Version
  3972.     BX = function
  3973.         0000h get version
  3974.         Return: AX = status (see #2085)
  3975.             BX = major version of VLM supported (0001h)
  3976.             CX = minor version of VLM supported (0000h)
  3977.  03h    FIO Statistics
  3978.     CX = length of buffer
  3979.     ES:DI -> buffer for statistics (see #2104)
  3980.     Return: AX = status (0000h if successful)
  3981.         buffer filled if successful
  3982.  04h    FIO Remote Copy
  3983.  
  3984. Format of NetWare FIO statistics:
  3985. Offset    Size    Description    (Table 2104)
  3986.  00h    WORD    length of statistics record (including this word)
  3987.  02h    WORD    number of read requests
  3988.  04h    WORD    number of write requests
  3989.  06h    WORD    number of cache read hits
  3990.  08h    WORD    number of cache write hits
  3991.  0Ah    WORD    number of cacheable files with free blocks
  3992.  0Ch    WORD    number of cacheable files without free blocks
  3993.  0Eh    WORD    number of standard read requests
  3994.  10h    WORD    number of standard write requests
  3995.  12h    WORD    number of burst read requests
  3996.  14h    WORD    number of burst write requests
  3997.  16h    BYTE    flag: cache writes enabled
  3998.  17h    BYTE    flag: true commits enabled
  3999.  18h    WORD    number of cache blocks
  4000.  1Ah    WORD    size of a cache buffer
  4001.  1Ch    WORD    number of ECBs for packet bursts (0000h if bursts disabled)
  4002. SeeAlso: #2103
  4003.  
  4004. (Table 2105)
  4005. Call PRINT.VLM (VLM ID 0042h) with:
  4006. Func    Description/Registers
  4007.  01h    Print Get Version
  4008.     BX = function
  4009.         0000h get version
  4010.         Return: AX = status (see #2085)
  4011.             BX = major version of VLM supported (0001h)
  4012.             CX = minor version of VLM supported (0000h)
  4013.  03h    Print Statistics
  4014.  04h    Print Get/Set Data
  4015.     BX??? = subfunction
  4016.         00h set printer control flags
  4017.         01h get printer control flags
  4018.         02h set extended printer control flags
  4019.         03h get extended printer control flags
  4020.  05h    Print Open Capture File
  4021.  07h    Print Get Num Of Printers
  4022.  08h    Print Redirection
  4023.     BX = subfunction
  4024.         0000h redirect device to queue
  4025.         AX = length of queue name, 0000h to use queue ID
  4026.         DS:SI -> uppercased ASCIZ queue name
  4027.         ES:DI -> queue ID, 0000h:0000h to use queue name
  4028.         0001h test whether device is redirected
  4029.         0002h cancel redirection
  4030.         0003h redirect device to file
  4031.         AX = 0000h or 4E57h ('NW')
  4032.         ES:DI -> ASCIZ path of file
  4033.         0004h get extended redirection information (see #2106)
  4034.     CX = connection handle
  4035.     DX = printer (0=LPT1)
  4036.     Return: AX = 0000h if successful
  4037.  09h    Print Flush And Close Job
  4038.  0Ch    Print Get/Set Banner Name
  4039.  
  4040. Format of PRINT.VLM standard print control information:
  4041. Offset    Size    Description    (Table 2106)
  4042.  00h    BYTE    PFStatus (reserved, 00h)
  4043.  01h    BYTE    print flags (default 80h)
  4044.         bit 2: release job for printing if capture interrupted
  4045.         bit 3: suppress form feed
  4046.         bit 4: notify
  4047.         bit 6: text file
  4048.         bit 7: print banner
  4049.  02h    BYTE    tab size (01h-12h, default 08h)
  4050.  03h    BYTE    number of copies (default 01h)
  4051.  04h    BYTE    ???
  4052.  05h    BYTE    form type to be mounted in printer (default 00h)
  4053.  06h    BYTE    reserved (00h)
  4054.  07h 14 BYTEs    banner
  4055.  15h    BYTE    capture printer (LPT) number
  4056.  16h    WORD    capture timeout in seconds
  4057.  18h    BYTE    job concatenation flag (00h or 01h, default 00h)
  4058.  19h    BYTE    maximum lines per page (default 66)
  4059.  1Ah    BYTE    ???
  4060.  1Bh    BYTE    maximum characters per line (default 132)
  4061.  1Ch    BYTE    ???
  4062.  1Dh 13 BYTEs    name of form to be mounted in printer
  4063.  2Ah    BYTE    flag: capture active (00h or FFh, default 00h)
  4064.  2Bh    BYTE    flag: capturing to file (00h or 01h, default 00h)
  4065.  2Ch    BYTE    flag: timeout field is being decremented (default 00h)
  4066.  2Dh    DWORD    -> printer setup string
  4067.  31h    DWORD    -> printer reset string
  4068.  35h    BYTE    reserved (01h)
  4069.  36h    BYTE    flag: job has started printing (00h or FFh, default 00h)
  4070.  37h    BYTE    flag: job placed in queue (00h or FFh, default 00h)
  4071.  38h    BYTE    flag: PJobValid (00h or FFh, default 00h)
  4072.  39h    DWORD    print-queue ID
  4073.  3Dh    BYTE    low byte of print-job number (default 00h)
  4074.  3Eh    BYTE    ???
  4075.  3Fh    BYTE    number of chars in INT 17h print cache buffer (default 00h)
  4076.  40h    BYTE    ???
  4077.  41h    BYTE    high byte of print-job number (default 00h)
  4078. SeeAlso: #2105
  4079.  
  4080. (Table 2107)
  4081. Call GENERAL.VLM (VLM ID 0043h) with:
  4082. Func    Description/Registers
  4083.  01h    Gen Get Version
  4084.     BX = function
  4085.         0000h get version
  4086.         Return: AX = status (see #2085)
  4087.             BX = major version of VLM supported (0001h)
  4088.             CX = minor version of VLM supported (0000h)
  4089.  03h    Gen Statistics
  4090.     CX = length of statistics buffer
  4091.     ES:DI -> buffer for statistics (see #2108)
  4092.     Return: AX = status (see #2085)
  4093.  04h    Gen Get/Set Primary
  4094.     BX = subfunction
  4095.         0001h get primary connection
  4096.         CX = primary connection handle to be retrieved
  4097.         Return: AX = status (see #2085)
  4098.             CX = primary connection handle
  4099.         0002h set primary connection
  4100.         CX = primary connection handle to be stored
  4101.         Return: AX = status (see #2085)
  4102.  06h    Gen Specific
  4103.     BX = subfunction
  4104.         0000h get command processor and master environment addresses
  4105.         Return: DX = segment of master environment
  4106.             ES:DI -> command processor's private COMSPEC= copy
  4107.         0001h get default or primary connection
  4108.         Return: AX = status (0000h successful)
  4109.             CX = connection handle if successful
  4110.         0002h last queue information
  4111.         AL = operation
  4112.             00h zap
  4113.             01h set
  4114.             02h get
  4115.         DI:DX = queue file handle
  4116.         CX = connection handle
  4117.         Return: AX = status (0000h successful)
  4118.             DI:DX = queue file handle
  4119.             CX = connection handle or 0000h if queue info invalid
  4120.         0003h get/set machine name(s)
  4121.         AX = name type
  4122.             00h get short machine name
  4123.             02h get long machine name
  4124.             04h set short machine name
  4125.             06h set long machine name
  4126.             08h get DOS name
  4127.             0Ah set DOS name
  4128.         ES:SI -> ASCIZ name if setting
  4129.         Return: AX = status (0000h if successful)
  4130.             ES:SI -> ASCIZ name if getting
  4131.         0004h set per-task EXEC search mode
  4132.         Return: AX = status (0000h if successful)
  4133.  09h    Gen Return Drive Info
  4134.     BX = subfunction
  4135.         0000h get first available drive
  4136.         Return: AX = status (see #2085)
  4137.             BX = drive letter of first drive
  4138.         0001h get Lastdrive
  4139.         Return: AX = status (see #2085)
  4140.             CH = number lastdrive 1=A: - 1Ah=Z:
  4141.  
  4142. Format of NetWare GENERAL.VLM statistics:
  4143. Offset    Size    Description    (Table 2108)
  4144.  00h    WORD    size of statistics record, including this word
  4145.  02h    DWORD    previous INT 21 vector
  4146. SeeAlso: #2107
  4147.  
  4148. (Table 2109)
  4149. Call NETX.VLM (VLM ID 0050h) with:
  4150. Func    Description/Registers
  4151.  01h    NetX Get Version
  4152.     BX = function
  4153.         0000h get version
  4154.         Return: AX = status (see #2085)
  4155.             BX = major version of VLM supported (0001h)
  4156.             CX = minor version of VLM supported (0000h)
  4157.  03h    NetX Statistics
  4158.  
  4159. (Table 2110)
  4160. Call SECURITY.VLM (VLM ID 0061h) with:
  4161. Func    Description/Registers
  4162.  01h    Security Get Version
  4163.     BX = function
  4164.         0000h get version
  4165.         Return: AX = status (see #2085)
  4166.             BX = major version of VLM supported (0001h)
  4167.             CX = minor version of VLM supported (0000h)
  4168.  03h    Security Statistics
  4169.  04h    ???
  4170.     AL = subfunction
  4171.         01h compute session key
  4172.         DS:SI -> 24-byte input buffer
  4173.         ES:DI -> 8-byte output buffer
  4174. --------N-2F7A20BX0001-----------------------
  4175. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM CallA ADDRESS
  4176.     AX = 7A20h
  4177.     BX = 0001h
  4178. Return: AX = 0000h if request was handled
  4179.         ES:BX -> CallA entry point (see #2111)
  4180.  
  4181. (Table 2111)
  4182. Call VLM CallA entry point with:
  4183.     AX = function
  4184.         0000h submit
  4185.         0001h cancel (not implemented)
  4186.     ES:DI -> Overlay Asynchronous Control Block structure (see #2112)
  4187.  
  4188. Format of Overlay Asynchronous Control Block (OACB):
  4189. Offset    Size    Description    (Table 2112)
  4190.  00h    DWORD    link to next OACB, 0000h:0000h if last
  4191.  04h    DWORD    callback address or 0000h:0000h
  4192.  08h    BYTE    InUse flag (00h if complete)
  4193.  09h    BYTE    flag, reserved for VLM use
  4194.  0Ah    WORD    destination VLM
  4195.  0Ch    WORD    destination function
  4196.  0Eh    WORD    temporary storage for VLM.EXE
  4197.  10h  6 BYTEs    reserved
  4198.  16h  6 DWORDs    EAX,EBX,ECX,EDX,ESI,EDI
  4199.  2Eh  4 WORDs    DS,ES,FS,GS (FS and GS not used)
  4200. --------N-2F7A20BX0002-----------------------
  4201. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM MULTIPLEX ADDRESS
  4202.     AX = 7A20h
  4203.     BX = 0002h
  4204. Return: AX = 0000h
  4205.     ES:BX -> VLM multiplex entry point (see #2113)
  4206. Note:    for v1.10, this function is only available while VLM.EXE is loading
  4207.       the .VLM modules, because ES is destroyed on return
  4208.  
  4209. (Table 2113)
  4210. Call DOS Requester entry point with:
  4211.     BX = function???
  4212.         0000h
  4213.         DX = ???
  4214.         DI = ???
  4215.         BP = ???
  4216.         0002h
  4217.         CX = ???
  4218.         0003h
  4219.         DX = ???
  4220.         BP = ???
  4221.         0006h
  4222.         AH = subfunction???
  4223.         AL = ???
  4224.         STACK: variable (0, 4, 10, 14 bytes seen)
  4225. --------N-2F7A20BX0003-----------------------
  4226. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM PARSE API ADDRESS
  4227.     AX = 7A20h
  4228.     BX = 0003h
  4229. Return: AX = 0000h if request was handled
  4230.         ES:BX -> VLM parse API entry point
  4231. --------N-2F7A20BX0004-----------------------
  4232. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM MULTICAST CALLOUT
  4233.     AX = 7A20h
  4234.     BX = 0004h
  4235. Return: AX = 0000h if request was handled
  4236.         ES:BX -> VLM multicast data (see #2114)
  4237.  
  4238. Format of DOS Requester data:
  4239. Offset    Size    Description    (Table 2114)
  4240.  00h    DWORD    pointer to ??? (code)
  4241.  04h  4 BYTEs    ???
  4242.  08h    DWORD    pointer to ??? (code) (see #2115)
  4243.     ???
  4244.  
  4245. (Table 2115)
  4246. Call offset 08h function with:
  4247.     AL = function (00h-07h)
  4248.     ???
  4249. Return: ???
  4250. --------N-2F7A20BX0005-----------------------
  4251. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM INT 24 ADDRESS
  4252.     AX = 7A20h
  4253.     BX = 0005h
  4254. Return: AX = 0000h if request was handled
  4255.         ES:BX -> VLM INT 24 handler
  4256. --------N-2F7A20BX0006-----------------------
  4257. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  4258.     AX = 7A20h
  4259.     BX = 0006h
  4260. Return: AX = 0000h if request was handled
  4261.         ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  4262. --------N-2F7A20BX0007-----------------------
  4263. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  4264.     AX = 7A20h
  4265.     BX = 0007h
  4266. Return: AX = 0000h
  4267.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  4268. --------N-2F7A20BX0008-----------------------
  4269. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  4270.     AX = 7A20h
  4271.     BX = 0008h
  4272. Return: AX = 0000h
  4273.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  4274. --------N-2F7A20BX0080-----------------------
  4275. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  4276.     AX = 7A20h
  4277.     BX = 0080h
  4278. Return: AX = 0000h
  4279.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  4280. Note:    this function is identical to AX=7A20h/BX=0006h in v1.03 and v1.10
  4281. --------N-2F7A20BX0081-----------------------
  4282. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  4283.     AX = 7A20h
  4284.     BX = 0081h
  4285. Return: AX = 0000h
  4286.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  4287. Note:    this function is identical to AX=7A20h/BX=0007h in v1.03 and v1.10
  4288. --------N-2F7A20BX0082-----------------------
  4289. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  4290.     AX = 7A20h
  4291.     BX = 0082h
  4292. Return: AX = 0000h
  4293.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  4294. Note:    this function is identical to AX=7A20h/BX=0008h in v1.03 and v1.10
  4295. --------N-2F7A21-----------------------------
  4296. INT 2F C - Novell NetWare - DOS Requester - BROADCAST CALLBACK
  4297.     AX = 7A21h
  4298.     CX = server connection (FFFFh if message from Personal NetWare user)
  4299.     interrupts disabled
  4300. Return: CX = 0000h if broadcast handled
  4301.     interrupts disabled
  4302. Note:    this function is only linked into INT 2F when INT 21/AH=DEh/DL=05h
  4303.       has been issued
  4304. SeeAlso: AX=7A22h,AX=7A85h,INT 21/AH=DEh
  4305. --------N-2F7A22-----------------------------
  4306. INT 2F C - Novell NetWare - DOS Requester - BROADCAST/SFT3 INFORM
  4307.     AX = 7A22h
  4308.     DL = function
  4309.         21h ('!') broadcast waiting for workstation
  4310.         40h ('@') SFT3 server-change inform
  4311.     BX = transport type
  4312.         0021h IPX
  4313.         0022h TCP
  4314.     ES:SI -> transport-specific data block
  4315.         (ECB for IPX, undefined for TCP)
  4316.     interrupts disabled
  4317. Return: AX = 0000h if event handled, unchanged if not
  4318.     interrupts disabled
  4319. Note:    this callback is made from within a hardware interrupt handler; a
  4320.       separate call to AX=7A21h is made once the system is in a safe
  4321.       state for receiving the message
  4322. SeeAlso: AX=7A21h
  4323. --------N-2F7A2F-----------------------------
  4324. INT 2F U - Novell NetWare - IPXODI v2.12 - GET GNMA SUPPORT
  4325.     AX = 7A2Fh
  4326. Return: AX = 0000h if supported and active
  4327.         BX = support level (0001h)
  4328.         ES:DI -> GNMA entry point (see #2116)
  4329. Program: GNMA is the Generic NetWare Management Agent
  4330. Note:    IPXODI v2.12 is distributed as part of the Personal NetWare system
  4331.       bundled with Novell DOS 7
  4332. SeeAlso: INT 7A/BX=001Fh
  4333.  
  4334. (Table 2116)
  4335. Call IPXODI GNMA entry point with:
  4336.     BX = function
  4337.         0000h ???
  4338.         ES:SI -> ??? data
  4339.         0001h ???
  4340.         AX = ???
  4341.         Return: ES:SI -> ??? data
  4342.         0002h get ??? address
  4343.         Return: ES:SI -> ??? buffer
  4344.         0003h send SPX packet???
  4345.         AL = ???
  4346.         CX = ???
  4347.         DX = ???
  4348.         SI = ???
  4349.         Return: ??? (registers from a call to INT 7A/BX=0016h)
  4350. Return: BX corrupted
  4351. --------N-2F7A2FBX0EDC-----------------------
  4352. INT 2F U - Personal NetWare - HRMIB - UNINSTALL
  4353.     AX = 7A2Fh
  4354.     BX = 0EDCh ('EDC' = Novell European Development Center)
  4355. Return: ???
  4356. SeeAlso: AX=7AA0h
  4357. --------N-2F7A40-----------------------------
  4358. INT 2F U - Novell NetWare - TCP/IP Protocol Stack - INSTALLATION CHECK
  4359.     AX = 7A40h
  4360. Return: AX = 7AFFh if installed
  4361.         BX = ??? bit flags (see #2117)
  4362.         CX = version (CH=major, CL=minor)
  4363.         DX = 0000h
  4364.         ES:DI -> entry point for TCP/IP stack (see #2118)
  4365. Notes:    Novell's LAN Workplace for DOS TCPIP.EXE also supports this interface
  4366.     this function is also supported by the Beame&Whiteside BWLWP40 shim,
  4367.       but it only returns AL and ES:DI, and does not support AX=7A41h
  4368. SeeAlso: AX=7A41h,INT 15/AX=DE2Eh,INT 60"Excelan"
  4369.  
  4370. Bitfields for returned BX:
  4371. Bit(s)    Description    (Table 2117)
  4372.  0    ???
  4373.  1    ???
  4374.  15-2    reserved???
  4375.  
  4376. (Table 2118)
  4377. Call NetWare TCP/IP entry point with:
  4378.     ES:SI -> parameter block (see #2119)
  4379. Return: ES:SI parameter block updated
  4380.  
  4381. Format of NetWare TCP/IP parameter block:
  4382. Offset    Size    Description    (Table 2119)
  4383.  00h  4 BYTEs    ???
  4384.  04h    WORD    (ret) ???
  4385.  06h    WORD    (ret) ???
  4386.  08h    DWORD    -> FAR routine called if bit 7 of function code set
  4387.  0Ch    BYTE    flags???
  4388.  0Dh  7 BYTEs    ???
  4389.  14h    BYTE    (ret) ???
  4390.  15h    BYTE    (call) function code (bit 7 set if ???) (see #2120)
  4391.  16h    BYTE    socket number
  4392.  17h    BYTE    (ret) result or error code
  4393.  18h  4 WORDs    parameter words 0 to 3 (see #2120 for usage)
  4394.  20h    WORD    length of packet sent/received
  4395.  22h    WORD    number of pointer/length pairs following
  4396.  24h 6N BYTEs    buffer descriptors, each
  4397.         Offset    Size    Description
  4398.          00h    DWORD    pointer to buffer
  4399.          04h    WORD    length of buffer
  4400.  
  4401. (Table 2120)
  4402. Values for NetWare TCP/IP function code:
  4403.  01h    "accept"
  4404.  02h    "bind"
  4405.  03h    close socket
  4406.     Call:    socket number field set
  4407.  04h    "connect"
  4408.  05h    get IP address
  4409.     Call:    socket number field set to 0000h
  4410.     Return:    parameter words 1 and 2 contain caller's IP address
  4411.  06h    get hardware address
  4412.  07h    "getpeername"
  4413.  08h    get socket name
  4414.  0Ah    get netmask
  4415.  0Bh    "ioctl"
  4416.  0Ch    "listen"
  4417.  0Dh    "select"
  4418.  10h    "shutdown"
  4419.  11h    open socket
  4420.     Call:    socket number field set to 0000h
  4421.         parameter word 0 = desired protocol (6 = TCP, 17 = UDP)
  4422.     Return: socket number set
  4423.  12h    "read"
  4424.  13h    "recvfrom"
  4425.     Call:    socket number set
  4426.         packet length and buffer descriptors set
  4427.     Return:    packet length and receive buffers updated
  4428.         parameter word 1 = source port number
  4429.         parameter words 2 and 3 = source IP address
  4430.  14h    "write"
  4431.  15h    "sendto"
  4432.     Call:    socket number set
  4433.         flags field = ???
  4434.         parameter word 0 = 0000h
  4435.         parameter word 1 = destination port number
  4436.         parameter words 2 and 3 = destination IP address
  4437.         packet length and buffer descriptors set
  4438.  16h    get BOOTP data
  4439. Note:    these functions are based on the Unix socket interface
  4440. --------N-2F7A41-----------------------------
  4441. INT 2F - Novell NetWare - TCP/IP Protocol Stack - WINDOWS SUPPORT???
  4442.     AX = 7A41h
  4443.     ES:DI -> FAR entry point for ??? (will be called with BX=1,2,3,4)
  4444. Return: AX = 7AFFh if supported
  4445.         BX = ??? (see #2117)
  4446.         CX = version (CH=major, CL=minor)
  4447.         DX = 0000h
  4448.         ES:SI -> DWORD containing passed value of ES:DI
  4449.         ES:DI -> entry point for TCP/IP stack
  4450. Notes:    Novell's LAN Workplace for DOS TCPIP.EXE also supports this interface
  4451.     the pointer which is set to ES:DI is cleared to 0000h:0000h when
  4452.       a Windows exit broadcast is received
  4453. SeeAlso: AX=7A40h
  4454. --------N-2F7A42-----------------------------
  4455. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - GET ??? ENTRY POINT
  4456.     AX = 7A42h
  4457. Return: AX = 7AFFh if supported
  4458.         ES:DI -> ??? entry point (see #2121)
  4459.  
  4460. (Table 2121)
  4461. Call NetWare TCPIP.EXE entry point with:
  4462.     DX = ???
  4463.     ES:DI -> ??? (see #2122)
  4464. Return: AX = 0000h
  4465.     other registers destroyed
  4466.  
  4467. Format of data buffer:
  4468. Offset    Size    Description    (Table 2122)
  4469.  00h    WORD    offset of WORD ??? or 0000h
  4470.  02h    WORD    offset of DWORD ??? or 0000h
  4471.  04h    WORD    offset of DWORD ??? or 0000h
  4472. --------N-2F7A43-----------------------------
  4473. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - GET ???
  4474.     AX = 7A43h
  4475. Return: AX = 7AFFh if supported
  4476.         DX = offset of ???
  4477. SeeAlso: AX=7A44h
  4478. --------N-2F7A44-----------------------------
  4479. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - SET ???
  4480.     AX = 7A44h
  4481.     DX = offset of ??? (see AX=7A43h)
  4482. Return: AX = 7AFFh if supported
  4483. SeeAlso: AX=7A43h
  4484. --------N-2F7A4C-----------------------------
  4485. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - GET ???
  4486.     AX = 7A4Ch
  4487. Return: AX = 7AFFh if supported
  4488.         BX = ??? (0037h)
  4489.         CX = ??? (001Ch)
  4490. --------N-2F7A4DBX0001-----------------------
  4491. INT 2F - Novell NetWare - ???
  4492.     AX = 7A4Dh
  4493.     BX = 0001h
  4494.     ES:DI -> ???
  4495. Return: AL = FFh if ???
  4496.         ES:DI -> ???
  4497. Note:    called by NETBIOS.EXE v3.01
  4498. --------N-2F7A4E-----------------------------
  4499. INT 2F - Novell LAN Workplace for DOS - RARPD.EXE - INSTALLATION CHECK
  4500.     AX = 7A4Eh
  4501. Return: AX = 7AFFh if installed
  4502. SeeAlso: AX=7A4Fh"RARPD"
  4503. --------N-2F7A4F-----------------------------
  4504. INT 2F - Novell LAN Workplace for DOS - RARPD.EXE - UNINSTALL
  4505.     AX = 7A4Fh
  4506. Return: AX = 7AFFh if installed
  4507.     DX,ES destroyed
  4508. Note:    this call conflicts with SNMP.EXE (both RARPD and SNMP are supplied
  4509.       with LAN Workplace for DOS!), such that running SNMP will uninstall
  4510.       RARPD as SNMP checks whether it is already installed!
  4511. SeeAlso: AX=7A4Eh"RARPD",AX=7A4Fh/BX=0001h
  4512. --------N-2F7A4FBX0001-----------------------
  4513. INT 2F - Novell NetWare - SNMP.EXE - INSTALLATION CHECK
  4514.     AX = 7A4Fh
  4515.     BX = 0001h
  4516. Return: AX = 7AFFh if installed
  4517. Note:    this call conflicts with RARPD.EXE (both SNMP and RARPD are supplied
  4518.       with LAN Workplace for DOS!), such that running SNMP will uninstall
  4519.       RARPD as SNMP checks whether it is already installed!
  4520. SeeAlso: AX=7A4Fh"RARPD",AX=7A4Fh/BX=0002h
  4521. --------N-2F7A4FBX0002-----------------------
  4522. INT 2F - Novell NetWare - SNMP.EXE - ???
  4523.     AX = 7A4Fh
  4524.     BX = 0002h
  4525. Return: AL = status
  4526.         4Fh if failed
  4527.         FFh if successful
  4528. SeeAlso: AX=7A4Fh/BX=0001h
  4529. --------N-2F7A80-----------------------------
  4530. INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - ABNORMAL EXIT
  4531.     AX = 7A80h
  4532. Return: nothing
  4533. Notes:    called on abnormal exit of the NetWare shell to notify other Novell
  4534.       TSRs that it is unsafe to call the shell in the future.
  4535.     must be passed through so that all interested programs see the exit
  4536.     on receiving this call, IPXODI clears an internal pointer to a
  4537.       default value; Novell's NETBIOS.EXE clears its INT 21h pointer to
  4538.       0000h:0000h and stops calling it
  4539. SeeAlso: AX=7A81h
  4540. --------N-2F7A81-----------------------------
  4541. INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - SET SHELL INT 21 HANDLER
  4542.     AX = 7A81h
  4543.     CX:DX -> shell's INT 21h entry point
  4544. Return: nothing
  4545. Notes:    the shell calls this function as it loads to allow interested TSRs
  4546.       and drivers to make a local copy of the shell's entry point
  4547.     must be passed through so that all interested programs see it
  4548. --------N-2F7A85-----------------------------
  4549. INT 2F C - Novell NetWare - shell 3.01 - BROADCAST INFORM
  4550.     AX = 7A85h
  4551.     CX = broadcast server number
  4552. Return: CX = 0000h if broadcast message handled by another program
  4553.     CX unchanged if broadcast not handled
  4554. SeeAlso: AX=7A21h
  4555. --------N-2F7A90-----------------------------
  4556. INT 2F U - Novell NetWare - NETBIOS.EXE 3+ - INSTALLATION CHECK
  4557.     AX = 7A90h
  4558. Return: AL = 00h if present
  4559.         BX = ???
  4560.         CX = PSP segment of NETBIOS resident code
  4561. SeeAlso: AX=7AFEh
  4562. --------N-2F7AA0-----------------------------
  4563. INT 2F U - Personal NetWare - HRMIB - ???
  4564.     AX = 7AA0h
  4565.     BX = function
  4566.         0000h ???
  4567.         0001h ???
  4568. Return: ???
  4569. SeeAlso: AX=7A2Fh/BX=0EDCh
  4570. --------N-2F7AC1-----------------------------
  4571. INT 2F - LAN HiJack - LHR - DISABLE???
  4572.     AX = 7AC1h
  4573. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  4574.       to take over control of a workstation remotely; LHR is the program
  4575.       run on the slave workstation
  4576. SeeAlso: AX=7AC8h,AX=7AC9h,AX=7ACFh
  4577. --------N-2F7AC2-----------------------------
  4578. INT 2F - LAN HiJack - LHR - SYNCHRONIZE SHIFT STATES???
  4579.     AX = 7AC2h
  4580. Note:    sets BIOS keyboard status byte to an internal variable
  4581. SeeAlso: AX=7AC3h,AX=7ACFh
  4582. --------N-2F7AC3-----------------------------
  4583. INT 2F - LAN HiJack - LHR - CLEAR ??? FLAG
  4584.     AX = 7AC3h
  4585. SeeAlso: AX=7AC2h,AX=7ACFh
  4586. --------N-2F7AC8-----------------------------
  4587. INT 2F - LAN HiJack - LHR - ENABLE FUNCTIONS
  4588.     AX = 7AC8h
  4589.     BL = function(s) to enable (see #2123)
  4590. SeeAlso: AX=7AC1h,AX=7AC9h,AX=7ACFh
  4591.  
  4592. Bitfields for LAN HiJack function(s) to enable/disable:
  4593. Bit(s)    Description    (Table 2123)
  4594.  0    ???
  4595.  1    remote keyboard enabled
  4596.  2    support remote's mouse
  4597.  3-7    unused
  4598. --------N-2F7AC9-----------------------------
  4599. INT 2F - LAN HiJack - LHR - DISABLE FUNCTIONS
  4600.     AX = 7AC9h
  4601.     BL = function(s) to disable (see #2123)
  4602. SeeAlso: AX=7AC1h,AX=7AC8h
  4603. --------N-2F7ACA-----------------------------
  4604. INT 2F - LAN HiJack - LHJ - ???
  4605.     AX = 7ACAh
  4606.     BL = ???
  4607. Return: ???
  4608. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  4609.       to take over control of a workstation remotely; LHJ is the program
  4610.       run on the controlling workstation
  4611. --------N-2F7ACB-----------------------------
  4612. INT 2F - LAN HiJack - LHJ - ???
  4613.     AX = 7ACBh
  4614.     BX = ???
  4615. Return: ???
  4616. Note:    this function appears to be related to the keyboard
  4617. SeeAlso: AX=7ACCh
  4618. --------N-2F7ACC-----------------------------
  4619. INT 2F - LAN HiJack - LHJ - ???
  4620.     AX = 7ACCh
  4621.     BX = ???
  4622. Return: ???
  4623. Note:    this function appears to be related to the mouse
  4624. SeeAlso: AX=7ACBh
  4625. --------N-2F7ACFBX0000-----------------------
  4626. INT 2F - LAN HiJack - LHR - INSTALLATION CHECK
  4627.     AX = 7ACFh
  4628.     BX = 0000h
  4629. Return: BX = segment of resident code if installed
  4630. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  4631.       to take over control of a workstation remotely; LHR is the program
  4632.       run on the slave workstation
  4633. --------N-2F7AF0-----------------------------
  4634. INT 2F - Novell NetWare - DOSNP.EXE v1.30G - INSTALLATION CHECK
  4635.     AX = 7AF0h
  4636. Return: AL = FFh if present
  4637.         ES = 7AF0h
  4638.         CX = PSP segment of resident code
  4639. --------N-2F7AF1-----------------------------
  4640. INT 2F - Novell NetWare - Access Server Driver - INSTALLATION CHECK
  4641.     AX = 7AF1h
  4642.     BL = sequence number (01h first driver, 02h second, 00h no driver)
  4643. Return: AX <> 7AF1h if present
  4644.         BH = total number of drivers
  4645.         ---if BL nonzero on entry---
  4646.         AL = number of ports provided by specified driver
  4647.         ES:DI -> driver entry point
  4648.               (see #2124,#2125,#2126,#2127,#2128,#2129,#2130,#2131)
  4649.         ES:DX -> ID string
  4650. SeeAlso: INT 7A/BX=001Ch
  4651.  
  4652. (Table 2124)
  4653. Call Access Server driver "initialize port" function with:
  4654.     AH = 01h
  4655.     AL = port number (00h-0Fh)
  4656.     ES:BX -> configuration parameter block (see #2137)
  4657.     interrupts disabled
  4658. Return: CF clear if successful
  4659.     CF set on error
  4660. SeeAlso: #2125
  4661.  
  4662. (Table 2125)
  4663. Call Access Server driver "get port status" function with:
  4664.     AH = 02h
  4665.     AL = port number (00h-0Fh)
  4666.     interrupts disabled
  4667. Return: CF clear if successful
  4668.         BL = transmitter status (see #2134)
  4669.         BH = receiver status (see #2135)
  4670.         DL = external status signals (see #2136)
  4671.     CF set on error
  4672.     interrupts disabled
  4673. SeeAlso: #2124,#2126,#2129
  4674.  
  4675. (Table 2126)
  4676. Call Access Server driver "get input from port" function with:
  4677.     AH = 03h
  4678.     AL = port number (00h-0Fh)
  4679.     CX = size of data buffer
  4680.     ES:BX -> buffer for data
  4681.     interrupts disabled
  4682. Return: CF clear if successful
  4683.     CF set on error
  4684.     interrupts disabled
  4685.     CX = number of bytes read
  4686. Note:    the driver will add a NUL to the buffer when a break signal is detected
  4687. SeeAlso: #2126,#2127
  4688.  
  4689. (Table 2127)
  4690. Call driver "send output data to port" function with:
  4691.     AH = 04h
  4692.     AL = port number (00h-0Fh)
  4693.     CX = number of bytes to send
  4694.     ES:BX -> buffer containing data
  4695.     interrupts disabled
  4696. Return: CF clear if successful
  4697.     CF set on error
  4698.     interrupts disabled
  4699.     CX = number of bytes actually written
  4700. SeeAlso: #2126,#2128
  4701.  
  4702. (Table 2128)
  4703. Call driver "get I/O character counts" function with:
  4704.     AH = 05h
  4705.     AL = port number (00h-0Fh)
  4706.     interrupts disabled
  4707. Return: CF clear if successful
  4708.         BX = number of bytes pending transmission
  4709.         CX = number of bytes available for reading
  4710.     CF set on error
  4711.     interrupts disabled
  4712. SeeAlso: #2126,#2127
  4713.  
  4714. (Table 2129)
  4715. Call driver "control XON/XOFF" function with:
  4716.     AH = 06h
  4717.     AL = port number (00h-0Fh)
  4718.     DL = new state
  4719.         (00h software flow control disabled, else enabled)
  4720.     interrupts disabled
  4721. Return: CF clear if successful
  4722.     CF set on error
  4723.     interrupts disabled
  4724. SeeAlso: #2130
  4725.  
  4726. (Table 2130)
  4727. Call driver "get error counts and statistics" function with:
  4728.     AH = 07h
  4729.     AL = port number (00h-0Fh)
  4730.     ES:BX -> buffer for statistics (see #2138)
  4731.     interrupts disabled
  4732. Return: CF clear if successful
  4733.         ES:BX buffer filled
  4734.     CF set on error
  4735.     interrupts disabled
  4736. SeeAlso: #2131,#2132,#2133
  4737.  
  4738. (Table 2131)
  4739. Call driver "general request" function with:
  4740.     AH = 08h
  4741.     AL = port number (00h-0Fh)
  4742.     DX = requested operations
  4743.         bit 0: flush transmit buffers
  4744.         bit 1: flush receive buffers
  4745.         bit 4: define XON/XOFF characters
  4746.     ES:BX -> XON/XOFF characters (see #2139) if DX bit 4 set
  4747.     interrupts disabled
  4748. Return: CF clear if successful
  4749.     CF set on error
  4750.     interrupts disabled
  4751.  
  4752. (Table 2132)
  4753. Call driver "deadman timer management" function with:
  4754.     AH = 09h
  4755.     AL = port number (00h-0Fh)
  4756.     BX = next time interval in seconds (0000h to disable timer)
  4757.     interrupts disabled
  4758. Return: CF clear
  4759.     interrupts disabled
  4760. SeeAlso: #2133
  4761.  
  4762. (Table 2133)
  4763. Call driver "get buffer sizes" function with:
  4764.     AH = 0Ah
  4765.     AL = port number (00h-0Fh)
  4766.     interrupts disabled
  4767. Return: CF clear if successful
  4768.        BX = size of transmit buffer
  4769.        CX = size of receive buffer
  4770.     CF set on error
  4771.     interrupts disabled
  4772. SeeAlso: #2132
  4773.  
  4774. (Table 2134)
  4775. Values for Access Server transmitter status:
  4776.  00h    uninitialized
  4777.  01h    ready, not transmitting
  4778.  02h    transmitting
  4779.  03h    XOFF received
  4780.  04h    transmitting, buffer full
  4781.  05h    XOFF received and buffer full
  4782.  
  4783. (Table 2135)
  4784. Values for Access Server receiver status:
  4785.  00h    uninitialized
  4786.  01h    ready
  4787.  02h    receive buffer full, data may have been lost
  4788.  
  4789. Bitfields for external status signals:
  4790. Bit(s)    Description    (Table 2136)
  4791.  7,6    undefined
  4792.  5    CTS active
  4793.  4    DSR active
  4794.  3    DCD active
  4795.  2,1    undefined
  4796.  0    ring indicator
  4797.  
  4798. Format of Access Server configuration parameter block:
  4799. Offset    Size    Description    (Table 2137)
  4800.  00h    BYTE    receive baud rate index
  4801.         00h 50 bps, 01h 75 bps, 02h 110 bps, 03h 134.5 bps,
  4802.         04h 150 bps, 05h 300 bps, 06h 600 bps, 07h 1200 bps,
  4803.         08h 1800 bps, 09h 2000 bps, 0Ah 2400 bps, 0Bh 3600 bps,
  4804.         0Ch 4800 bps, 0Dh 7200 bps, 0Eh 9600 bps, 0Fh 19200 bps,
  4805.         10h 38400 bps, 11h 57600 bps, 12h 115200 bps
  4806.  01h    BYTE    receive bits per character (0=5 bits..3=8 bits)
  4807.  02h    BYTE    receive stop bits
  4808.  03h    BYTE    receive parity
  4809.         00h none, 01h odd, 02h even, 03h mark, 04h space
  4810.  04h    BYTE    transmit baud rate index (same as receive baud rate)
  4811.  05h    BYTE    transmit bits per character (0=5 bits..3=8 bits)
  4812.  06h    BYTE    transmit stop bits
  4813.  07h    BYTE    transmit parity (same as receive parity)
  4814.  08h    BYTE    DTR state (00h off, 01h on)
  4815.  09h    BYTE    RTS state (00h off, 01h on)
  4816.  0Ah    BYTE    flow control (00h none, 01h XON/XOFF, 02h RTS/CTS, 03h both)
  4817.  0Bh    BYTE    break control (00h off, 01h on)
  4818.  
  4819. Format of Access Server statistics:
  4820. Offset    Size    Description    (Table 2138)
  4821.  00h    BYTE    port number
  4822.  01h    BYTE    external status signals (see #2136)
  4823.  02h    BYTE    transmitter status (see #2134)
  4824.  03h    BYTE    receiver status (see #2135)
  4825.  04h    DWORD    number of characters received
  4826.  08h    DWORD    number of characters transmitted
  4827.  0Ch    WORD    input parity errors
  4828.  0Eh    WORD    input framing errors
  4829.  10h    WORD    lost characters due to hardware overrun
  4830.  12h    WORD    lost characters due to data buffer overrun
  4831. Note:    the counts are not allowed to wrap around; once a count reaches FFFFh
  4832.       or FFFFFFFFh, it is no longer incremented
  4833.  
  4834. Format of Access Server XON/XOFF characters:
  4835. Offset    Size    Description    (Table 2139)
  4836.  00h    BYTE    04h (number of bytes following)
  4837.  01h    BYTE    transmit XON character
  4838.  02h    BYTE    transmit XOFF character
  4839.  03h    BYTE    receive XON character
  4840.  04h    BYTE    receive XOFF character
  4841. --------N-2F7AFE-----------------------------
  4842. INT 2F - Novell NetWare - DOSNP.EXE - INSTALLATION CHECK
  4843.     AX = 7AFEh
  4844. Return: AL = FFh if present
  4845.         ES = (data???) segment of DOSNP
  4846. Program: DOSNP.EXE provides "named pipes" support for DOS workstations running
  4847.        NetWare
  4848. Note:    the NetWare shell calls this function and refuses to load if DOSNP is
  4849.       present
  4850. SeeAlso: AX=7A90h
  4851. --------N-2F7AFFBX0000-----------------------
  4852. INT 2F - Novell NetWare - TBMI v1.1+ - INSTALLATION CHECK / Windows SUPPORT
  4853.     AX = 7AFFh
  4854.     BX = 0000h
  4855.     CX = 4E65h ("Ne")
  4856.     DX = 7457h ("tW")
  4857.     ES:DI -> Windows support procedure (see #2140)
  4858. Return: AL = FFh if installed
  4859.         CX = configured sockets (14h)
  4860.         DS:SI -> data table ???
  4861.         ES:DI -> IPX far call handler
  4862. Notes:    for IPX/SPX this call reportedly returns DS:SI pointing to the table
  4863.       of pointers to service events queue head and tail
  4864.     this function is also supported by IPXODI; v2.12 does not change DS,
  4865.       but does set SI to an internal address
  4866. SeeAlso: AX=7AFFh/BX=0001h
  4867.  
  4868. (Table 2140)
  4869. Values Windows support procedure called with:
  4870.     BP = function
  4871.         0001h Get ECB
  4872.         BX = socket number
  4873.         Return: ES:SI -> ECB or 0000h:0000h if none available
  4874.         0002h Count Listen ECBs
  4875.         AX = BX = socket
  4876.         Return: CX = number of listen ECBs for socket
  4877.                 (must be >= 2 for SPX to work)
  4878.         0003h ???
  4879.         0004h Inform task switcher of ECB locations
  4880.         Note:    registers other than those listed above are equal
  4881.               to the values when IPX was called
  4882. Note:    the support function will not be called if IPX is called with BX
  4883.       bit 15 set
  4884. --------N-2F7AFFBX0001-----------------------
  4885. INT 2F - Novell NetWare - TBMI v1.1+, shell v3.01d - INSTALLATION CHECK???
  4886.     AX = 7AFFh
  4887.     BX = 0001h
  4888.     CX = 4E65h ("Ne")
  4889.     DX = 7457h ("tW")
  4890. Return: AL = FFh if installed
  4891.         CX = ???  (8000h)
  4892.         SI = ??? (or -> ???) (0002h and 0007h seen)
  4893.         ES:DI -> IPX far call handler
  4894.         ES:DX -> 6-byte data area ???
  4895. Note:    this function is also supported by IPXODI, but IPXODI v2.12 does not
  4896.       return ES:DX
  4897. SeeAlso: AX=7AFFh/BX=0000h
  4898. --------d-2F7F00-----------------------------
  4899. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - INSTALLATION CHECK
  4900.     AX = 7F00h
  4901. Return: AL = FFh if installed
  4902. SeeAlso: AX=7F01h,AX=7F02h,AX=7F03h
  4903. --------d-2F7F01-----------------------------
  4904. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO COMMAND
  4905.     AX = 7F01h
  4906.     DS:DX -> command record (see #2141)
  4907. Return: AL = status
  4908.         00h successful
  4909.         else error code
  4910. SeeAlso: AX=7F00h,AX=7F02h,INT 11/AH=FFh"SDLP",INT 21/AX=4402h"ASPI"
  4911. SeeAlso: INT 4F/AX=8100h
  4912.  
  4913. Format of CD-ROM redirector command record:
  4914. Offset    Size    Description    (Table 2141)
  4915.  00h    BYTE    ID
  4916.  01h 10 BYTEs    CDB (Command Descriptor Block) for operation
  4917.  0Bh    WORD    segment of buffer
  4918.  0Dh    WORD    offset of buffer
  4919.  0Fh    BYTE    status
  4920.  10h    BYTE    sense
  4921.  12h    WORD    count
  4922. --------d-2F7F02-----------------------------
  4923. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO RESET
  4924.     AX = 7F02h
  4925. SeeAlso: AX=7F00h,AX=7F01h
  4926. --------d-2F7F03-----------------------------
  4927. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - UNINSTALL
  4928.     AX = 7F03h
  4929. Return: AL = status
  4930.         00h successful
  4931.         01h unable to uninstall
  4932. SeeAlso: AX=7F00h
  4933. ----------2F7F24-----------------------------
  4934. INT 2F - Multiplex - ???
  4935.     AX = 7F24h
  4936.     ???
  4937. Return: ???
  4938. Note:    called by PC/370, an IBM 370 emulator by Donald S. Higgins
  4939. ----------2F7F26-----------------------------
  4940. INT 2F - Multiplex - ???
  4941.     AX = 7F26h
  4942.     ???
  4943. Return: ???
  4944. Note:    called by PC/370, an IBM 370 emulator by Donald S. Higgins
  4945. --------N-2F8000-----------------------------
  4946. INT 2F - EASY-NET - INSTALLATION CHECK
  4947.     AX = 8000h
  4948. Return: AL = 00h not installed
  4949.          FFh installed
  4950. Program: EASY-NET is a shareware two-machine serial-port network
  4951. --------N-2F8000-----------------------------
  4952. INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK
  4953.     AX = 8000h
  4954. Return: AL = FFh if installed
  4955.         BX = CS of resident code
  4956.         CX = ??? (03FCh)
  4957. Program: TurboNET is a NetBIOS-based file redirector and server; a
  4958.       demonstration version may be downloaded from Nanosoft's BBS
  4959. SeeAlso: AX=8100h
  4960. --------t-2F8000-----------------------------
  4961. INT 2F - CS_TSR specification - TSR INSTALLATION CHECK
  4962.     AX = 8000h
  4963.     DS:SI -> 4-byte CS_TSR signature (11h 43h 53h 10h)
  4964. Return: AL = status
  4965.         00h no CS_TSR-compliant TSRs installed
  4966.         01h installed, but signature did not match
  4967.         FFh installed, signature matches
  4968.         ES:DI -> resident process block (see #2142) of last installed
  4969.               TSR (if DS:SI pointed at signature on entry)
  4970. Program: the CS_TSR specification is a standardized TSR interface by Compact
  4971.       Soft group in Kiev, Ukraine
  4972. Desc:    determine whether any CS_TSR-compliant TSRs are installed on the
  4973.       selected multiplex number
  4974. Range:    AH=80h to AH=FFh
  4975. SeeAlso: AX=8001h"CS_TSR",AX=8002h"CS_TSR",AX=8003h"CS_TSR"
  4976.  
  4977. Format of CS_TSR process block:
  4978. Offset    Size    Description    (Table 2142)
  4979.  00h  4 BYTEs    CS_TSR signature 11h 43h 53h 10h
  4980.  04h    BYTE    INT 2F multiplex number
  4981.  05h    WORD    virtual process handle (unique among loaded TSRs)
  4982.  07h  2 BYTEs    version (binary minor version, then major version)
  4983.  09h    WORD    PSP segment of TSR
  4984.  0Bh    DWORD    pointer to ASCIZ program name
  4985.  0Fh  3 BYTEs    program creation date (day, month, year)
  4986.  12h  3 BYTEs    process start time (seconds, minutes, hours)
  4987.  15h  3 BYTEs    process start date (day, month, year)
  4988. --------F-2F8000DX0000-----------------------
  4989. INT 2F - FaxBIOS interface - INSTALLATION CHECK
  4990.     AX = 8000h
  4991.     DX = 0000h
  4992.     DI = 0000h
  4993. Return: AL = FFh if installed
  4994.     DX:DI -> signature "FaxBiosjpc"
  4995. Range:    AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
  4996. SeeAlso: AH=2Ah,AX=80FBh
  4997. --------N-2F8001-----------------------------
  4998. INT 2F - Nanosoft, Inc. TurboNET server - ???
  4999.     AX = 8001h
  5000.     DS:SI -> 16-byte buffer for ???
  5001. Return: AH = status
  5002.         00h successful
  5003.         01h error (TurboNET busy)
  5004. Note:    makes NetBIOS calls
  5005. --------t-2F8001-----------------------------
  5006. INT 2F - CS_TSR specification - GET HANDLE (TSR-SPECIFIC INSTALLATION CHECK)
  5007.     AX = 8001h
  5008.     DS:SI -> ASCIZ signature string for desired TSR (see #2143)
  5009. Return: BX = process handle or 0000h if specified TSR not installed
  5010.     ES:DI -> process block for TSR (see #2142) if BX<>0000h
  5011. Note:    A widely-available copy of ASCII billing itself as "ASCII 2.OO by
  5012.       Nick Zaikin Jr." is in fact a hacked copy of the Compact Soft
  5013.       ASCII v4.23 which is identical except for the changed attribution
  5014.       and version (in fact, some instances of "4.23" were missed); the
  5015.       hacked copy requires the signature string
  5016.       "ASCII 2.OO by Nick Zaikin Jr." instead of the unhacked version's
  5017.       simple signature "ASCII"
  5018. SeeAlso: AX=8000h"CS_TSR",AX=8002h"CS_TSR"
  5019.  
  5020. (Table 2143)
  5021. Values for CS_TSR signature strings:
  5022.  "ASCII"    ASCII, a popup ASCII table with character input
  5023.  "Halculator"    HALC, a 32-bit RPN WYSIWIH calculator with undo and ptr support
  5024.  "AntiTurbo"    AT!, an intelligent system slow-down utility
  5025. --------t-2F8002-----------------------------
  5026. INT 2F - CS_TSR specification - GET PROCESS BLOCK BY PROCESS HANDLE
  5027.     AX = 8002h
  5028.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  5029. Return: ES:DI -> process block for specified TSR (see #2142)
  5030.         unchanged if no match for process handle
  5031. Note:    This function is used to allocate a process handle when the TSR
  5032.       installs itself, by setting ES:DI to point at something other than
  5033.       a CS_TSR process block's signature string and iterating through the
  5034.       possible process handles (0001h to FFFFh) until ES:DI is returned
  5035.       unchanged
  5036. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8003h"CS_TSR"
  5037. --------t-2F8003-----------------------------
  5038. INT 2F - CS_TSR specification - CUSTOM SUBFUNCTION
  5039.     AX = 8003h
  5040.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  5041.     other registers vary by TSR
  5042. Return: vary by TSR, unchanged if not supported
  5043. Program: the CS_TSR specification is a standardized TSR interface by Compact
  5044.       Soft group in Kiev, Ukraine
  5045. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8002h"CS_TSR"
  5046. --------F-2F80FB-----------------------------
  5047. INT 2F - FaxBIOS interface - COMMAND SUBMISSION
  5048.     AX = 80FBh
  5049.     BX = function number (see #2144)
  5050.     DX:DI -> command buffer
  5051.           (see #2146,#2149,#2150,#2151,#2152,#2153,#2158,#2164,#2171)
  5052. Return: AL = FFh if submitted OK
  5053.     CX = result code (see #2145)
  5054. Range:    AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
  5055. SeeAlso: AX=8000h"FaxBIOS",AX=CBDDh
  5056.  
  5057. (Table 2144)
  5058. Values for FaxBIOS function number:
  5059.  0001h    SYS_LOGIN
  5060.  0002h    SYS_LOGOUT
  5061.  0003h    SYS_GET_FAXAPP_INFO
  5062.  0004h    STAT_IO_GET
  5063.  0005h    STAT_FAXBIOS_GET
  5064.  0006h    PDIR_OPEN
  5065.  0007h    PDIR_CLOSE (see #2154)
  5066.  0008h    PDIR_READ_PERSON (see #2155)
  5067.  0009h    PDIR_PARTIAL_READ
  5068.  000Ah    PDIR_READ_GROUP
  5069.  000Bh    PDIR_READ_MEMBER_LIST
  5070.  000Ch    PDIR_WRITE_PERSON
  5071.  000Dh    PDIR_WRITE_GROUP
  5072.  000Eh    PDIR_DELETE_PERSON
  5073.  000Fh    PDIR_DELETE_GROUP
  5074.  0010h    PDIR_READ_GROUP_LIST
  5075.  0011h    PDIR_IN_GROUP
  5076.  0012h    PDIR_OUT_GROUP
  5077.  0013h    SCHED_OPEN (see #2156)
  5078.  0014h    SCHED_ADD_DEST (see #2157)
  5079.  0015h    SCHED_ADD_FILE (see #2158)
  5080.  0016h    SCHED_SET_PARAMS (see #2159)
  5081.  0017h    SCHED_CANCEL (see #2156)
  5082.  0018h    SCHED_CLOSE (see #2160)
  5083.  0019h    SLOG_OPEN (see #2161)
  5084.  001Ah    SLOG_CLOSE (see #2161)
  5085.  001Bh    SLOG_SHORT_ENV_STAT
  5086.  001Ch    SLOG_LONG_ENV_STAT
  5087.  001Dh    SLOG_DEST_STAT
  5088.  001Eh    SLOG_FILE_STAT
  5089.  001Fh    SLOG_CANCEL_ENV
  5090.  0020h    RLOG_OPEN (see #2161)
  5091.  0021h    RLOG_CLOSE (see #2161)
  5092.  0022h    RLOG_READ
  5093.  0023h    GRAPH_GET_FILE_TYPE (see #2162)
  5094.  0024h    GRAPH_EXPORT_FILE
  5095.  0025h    GRAPH_GET_LAYOUT_INFO
  5096.  0026h    GRAPH_CREATE_FILE (see #2163)
  5097.  0027h    GRAPH_CLOSE_FILE (see #2164)
  5098.  0028h    GRAPH_CREATE_PAGE (see #2165)
  5099.  0029h    GRAPH_WRITE (see #2166)
  5100.  002Ah    GRAPH_END_PAGE
  5101.  002Bh    GRAPH_OPEN_FILE (see #2167)
  5102.  002Ch    GRAPH_GOTO_PAGE (see #2168)
  5103.  002Dh    GRAPH_READ (see #2169)
  5104.  002Eh    IOCTL_GET
  5105.  002Fh    IOCTL_SET
  5106.  0030h    IOCTL_ANSWER_FAX (see #2170)
  5107.  0031h    IOCTL_DIAL (see #2171)
  5108.  
  5109. (Table 2145)
  5110. Values for FaxBIOS result code:
  5111.  0000h    successful
  5112.  0001h    not prepared or servicing another client (busy)
  5113.  0002h    call failed due to sharing (LOCKED)
  5114.  0003h    logged-in client limit reached (FULL)
  5115.  0004h    transport denied (TRANSPORT_DENIED)
  5116.  0005h    not implemented (NOT_IMPLEMENTED)
  5117.  0006h    aborted while in progress (ABORTED)
  5118.  0007h    permissions denied (PERMISSION_DENIED)
  5119.  0008h    requested data is no longer valid (NO_LONGER_VALID)
  5120.  0080h    unspecified system error occurred
  5121.  0081h    an internal file was not found
  5122.  0082h    an internal file could not be created
  5123.  0083h    an internal file could not be opened
  5124.  0084h    an internal file could not be closed
  5125.  0085h    error occurred writing to an internal file
  5126.  0086h    error occurred reading from an internal file
  5127.  0087h    bad or corrupted file encountered
  5128.  0088h    an access violation occurred
  5129.  0089h    an internal file is empty
  5130.  008Ah    insufficient memory to process request
  5131.  008Bh    FaxBIOS was unable to issue a handle
  5132.  008Ch    an error internal to FaxBIOS occurred
  5133.  008Dh    no room on disk
  5134.  0100h    unspecified error accessing client file
  5135.  0101h    file not found
  5136.  0102h    creation fault
  5137.  0103h    open fault
  5138.  0104h    close fault
  5139.  0105h    write fault
  5140.  0106h    read fault
  5141.  0107h    file corrupted
  5142.  0108h    access violation
  5143.  0109h    empty file
  5144.  0200h    unspecified argument error
  5145.  0201h    bad function
  5146.  0202h    bad option
  5147.  0203h    bad structure size
  5148.  0204h    bad buffer size
  5149.  0205h    bad client ID
  5150.  0300h    unspecified error with token
  5151.  0301h    cover sheet token was invalid
  5152.  0302h    logo token was invalid
  5153.  0303h    signature token was invalid
  5154.  0304h    font token was invalid
  5155.  0305h    phone directory token was invalid
  5156.  0306h    outbound route token was invalid
  5157.  0307h    priority token was invalid
  5158.  0308h    sort token was invalid
  5159.  0309h    billing token was invalid
  5160.  0400h    unspecified handle error
  5161.  0401h    bad Phone Directory handle
  5162.  0402h    bad scheduling handle
  5163.  0403h    bad read send log handle
  5164.  0404h    bad read receive log handle
  5165.  0405h    bad graphics handle
  5166.  0500h    data passed in structure was invalid
  5167.  0501h    name field given is invalid
  5168.  0502h    phone number given is invalid
  5169.  0503h    poll code submitted is invalid
  5170.  0504h    file type constant was invalid
  5171.  0505h    BFT constant not defined or supported
  5172.  0506h    resolution not defined or supported
  5173.  0507h    page length not defined or supported
  5174.  0508h    page width not defined or supported
  5175.  0509h    date & time requested are ridiculous
  5176.  050Ah    Subject text was not an ASCIZ string
  5177.  050Bh    From text was not an ASCIZ string
  5178.  050Ch    requested envelope ID was not found
  5179.  050Dh    requested envelope ID is not valid
  5180.  050Eh    envelope requested was not found
  5181.  050Fh    destination index is out of range
  5182.  0510h    file index is out of range
  5183.  0511h    index into receive log is out of range
  5184.  0512h    file name specified was incomplete or invalid
  5185.  0513h    page selected was out of range
  5186.  0514h    bit width more than byte width
  5187.  0515h    mode for open is not defined
  5188.  0516h    person index is out of range
  5189.  0517h    person ID is out of range
  5190.  0518h    group index out of range or invalid
  5191.  0519h    group ID out of range or invalid
  5192.  051Ah    range of indices to read is invalid
  5193.  051Bh    group name given is invalid
  5194.  051Ch    field_to_use is badly specified
  5195.  051Dh    predicate invalid for field specified
  5196.  0600h    unspecified client procedure error
  5197.  0601h    device of interest is not present
  5198.  0602h    device of interest has been removed
  5199.  0603h    device of interest is not responding
  5200.  0604h    device of interest is disabled
  5201.  0605h    could not dial because device was in use
  5202.  0606h    maximum destination limit exceeded
  5203.  0607h    maximum file limit exceeded
  5204.  0608h    scheduling closed with no destination
  5205.  0609h    scheduling closed with no files or poll
  5206.  060Ah    scheduling closed with no parameters specified
  5207.  060Bh    file type specified does not match file
  5208.  060Ch    file type specified is not supported
  5209.  060Dh    file submitted is not exportable
  5210.  060Eh    file type specified is not imageable
  5211.  060Fh    error converting file
  5212.  0610h    envelope could not be cancelled
  5213.  0611h    Phone Directory is full
  5214.  0612h    record is already in the Phone Directory
  5215.  0613h    selected group in Phone Directory is full
  5216.  0614h    person is already in the group
  5217.  0615h    person is not in the group & cannot be removed
  5218.  0616h    a graphics file to be created already exists
  5219.  0617h    a graphics file to be read is empty
  5220.  0618h    GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
  5221.  0619h    graph read or write attempted without goto or create
  5222.  061Ah    graph page contains no data
  5223.  061Bh    Phone Directory is already open for this client
  5224.  061Ch    schedule log is already open for this client
  5225.  061Dh    receive log is aready open for this client
  5226.  061Eh    Phone Directory function requires write mode
  5227.  0800h    denied exclusive use of the API
  5228.  
  5229. Format of FaxBIOS SYS_LOGIN command buffer:
  5230. Offset    Size    Description    (Table 2146)
  5231.  00h    WORD    structure size
  5232.  02h    WORD    function number
  5233.  04h    WORD    return code
  5234.  06h    WORD    client ID
  5235.  08h    WORD    API Major Version
  5236.  0Ah    WORD    API Minor Version
  5237.  0Ch    DWORD    reserved for manufacturer's use
  5238.  10h 22 BYTEs    manufacturer's ID
  5239.  26h    WORD    highest possible device number
  5240.  28h    WORD    maximum destinations per envelope
  5241.  2Ah    WORD    maximum files per envelope
  5242.  2Ch    WORD    FaxBIOS capabilities (see #2147)
  5243.  2Eh    DWORD    T.30 capabilities (see #2148)
  5244.  32h    WORD    IPC handle
  5245.  34h    DWORD    amount of memory needed to load
  5246.  38h    WORD    scope (00h for public, nonzero for private)
  5247.  3Ah  6 BYTEs    future expansion
  5248.  40h    WORD    structure size
  5249.  
  5250. Bitfields for FaxBIOS capabilities:
  5251. Bit(s)    Description    (Table 2147)
  5252.  0    transmit supported
  5253.  1    receive supported
  5254.  2    IOCTL supported
  5255.  3    IOCTL_DIAL supported
  5256.  4    IOCTL_ANSWER_FAX supported
  5257.  5    manual transmit supported
  5258.  6    optional phone services supported
  5259.  7    canonical phone objects
  5260.  8    seam with next supported
  5261.  
  5262. Bitfields for T.30 capabilities:
  5263. Bit(s)    Description    (Table 2148)
  5264.  0    low vertical resolution (minimum)
  5265.  1    high vertical resolution
  5266.  2    page width 107mm (4.21 in)
  5267.  3    page width 151mm (5.91 in)
  5268.  4    page width 215mm (8.46 in) (minimum)
  5269.  5    page width 255mm (10.04 in)
  5270.  6    page width 303mm (11.93 in)
  5271.  7    unused
  5272.  8    page length 297mm (11.69 in) (minimum)
  5273.  9    page length 364mm (14.33 in)
  5274.  10    page length 279mm (11 in)
  5275.  11    page length unlimited
  5276.  12    Group 4 resolution 300x300
  5277.  13    Group 4 resolution 400x400
  5278.  14    able to respond to poll from remote
  5279.  15    able to poll remote
  5280.  16    binary file transfer supported
  5281.  
  5282. Format of FaxBIOS SYS_LOGOUT command buffer:
  5283. Offset    Size    Description    (Table 2149)
  5284.  00h    WORD    structure size
  5285.  02h    WORD    function number
  5286.  04h    WORD    return code
  5287.  06h    WORD    client ID
  5288.  08h    DWORD    client tag (for client's internal use)
  5289.  0Ch  6 BYTEs    future expansion
  5290.  12h    WORD    structure size
  5291.  
  5292. Format of FaxBIOS SYS_GET_FAXAPP_INFO command buffer:
  5293. Offset    Size    Description    (Table 2150)
  5294.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5295.  0Ch 80 BYTEs    FaxBIOS data
  5296.  5Ch 80 BYTEs    default cover
  5297.  ACh 80 BYTEs    default logo
  5298.  FCh 80 BYTEs    default signature
  5299. 14Ch 80 BYTEs    default font 10
  5300. 19Ch 80 BYTEs    default font 165
  5301. 1ECh 80 BYTEs    default user font
  5302. 23Ch 80 BYTEs    default Pdir
  5303. 28Ch 80 BYTEs    default sort
  5304. 2DCh 10 BYTEs    default bill
  5305. 2E6h 10 BYTEs    default route
  5306. 2F0h 40 BYTEs    default cover sheet form
  5307. 318h 34 BYTEs    valid dial characters
  5308. 33Ah  6 BYTEs    local country code
  5309. 340h  6 BYTEs    local city or area code
  5310. 346h  6 BYTEs    future expansion
  5311. 34Ch    WORD    structure size
  5312.  
  5313. Format of FaxBIOS STAT_IO_GET command buffer:
  5314. Offset    Size    Description    (Table 2151)
  5315.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5316.  0Ch    WORD    device number
  5317.  0Eh    WORD    current activity
  5318.  10h    WORD    number of rings (if ringing)
  5319.  12h    WORD    number of fascimiles transmitted
  5320.  14h    WORD    number of fascimiles received
  5321.  16h    WORD    status of last transmission
  5322.  18h    WORD    envelope number of last transmission
  5323.  1Ah    WORD    index of last destination in envelope
  5324.  1Ch    WORD    status of last reception
  5325.  1Eh    WORD    current page (if session in progress)
  5326.  20h 80 BYTEs    current file
  5327.  70h 104 BYTEs    remote number
  5328.  D8h 20 BYTEs    last name
  5329.  ECh 20 BYTEs    first name
  5330. 100h 32 BYTEs    company name
  5331. 120h 32 BYTEs    notes
  5332. 140h    WORD    current envelope ID (if sending)
  5333. 142h    WORD    total pages in transmission (if sending)
  5334. 144h  6 BYTEs    future expansion
  5335. 14h    WORD    structure size
  5336.  
  5337. Format of FaxBIOS STAT_FAXBIOS_GET command buffer:
  5338. Offset    Size    Description    (Table 2152)
  5339.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5340.  0Ch    WORD    status ID
  5341.  0Eh    WORD    currenty FaxBIOS function number
  5342.  10h    WORD    current Client ID being serviced
  5343.  12h    WORD    number of things to do
  5344.  14h    WORD    number of them done
  5345.  16h    WORD    number of pages to do (if any)
  5346.  18h    WORD    number of them done
  5347.  1Ah    WORD    number of files to do
  5348.  1Ch    WORD    number of them done
  5349.  1Eh 80 BYTEs    current File
  5350.  6Eh    WORD    0 if all devices are idle
  5351.  70h    WORD    number of fascimiles transmitted
  5352.  72h    WORD    number of fascimiles received
  5353.  74h    WORD    status of last transmission in system
  5354.  76h    WORD    envelope ID of last transmission
  5355.  78h    WORD    index of last destination in envelope
  5356.  7Ah    WORD    status of last reception in system
  5357.  7Ch    DWORD    time of next transmission
  5358.  80h  6 BYTEs    future expansion
  5359.  86h    WORD    structure size
  5360.  
  5361. Format of FaxBIOS PDIR_OPEN command buffer:
  5362. Offset    Size    Description    (Table 2153)
  5363.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5364.  0Ch 80 BYTEs    Phone Directory token
  5365.  5Ch 80 BYTEs    sort order token
  5366.  ACh    WORD    open Mode (0 = read, 1 = write)
  5367.  AEh    WORD    Phone Directory handle
  5368.  B0h    WORD    number of people
  5369.  B2h    WORD    number of groups
  5370.  B4h    WORD    bitmap of fields supported by partial read
  5371.  B6h  6 BYTEs    future expansion
  5372.  BCh    WORD    structure size
  5373.  
  5374. Format of FaxBIOS PDIR_CLOSE command buffer:
  5375. Offset    Size    Description    (Table 2154)
  5376.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5377.  0Ch    WORD    Phone Directory handle
  5378.  0Eh  6 BYTEs    future expansion
  5379.  14h    WORD    structure size
  5380.  
  5381. Format of FaxBIOS PDIR_READ_PERSON command buffer:
  5382. Offset    Size    Description    (Table 2155)
  5383.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5384.  0Ch    WORD    Phone Directory handle
  5385.  0Eh    WORD    retrieve by index
  5386.  10h    WORD    person ID or index
  5387.  12h    WORD    how many groups person is in
  5388.  14h    WORD    person ID
  5389.  16h 20 BYTEs    last name
  5390.  2Ah 20 BYTEs    first name
  5391.  3Eh 32 BYTEs    company
  5392.  5Eh 32 BYTEs    notes
  5393.  7Eh  6 BYTEs    FAX country code
  5394.  84h  6 BYTEs    FAX city/area code
  5395.  8Ah 14 BYTEs    FAX local number
  5396.  98h 14 BYTEs    FAX extension
  5397.  A6h 24 BYTEs    reserved
  5398.  BEh  6 BYTEs    voice country code
  5399.  C4h  6 BYTEs    voice city/area code
  5400.  CAh 14 BYTEs    voice local number
  5401.  D8h 14 BYTEs    voice extension
  5402.  E6h 24 BYTEs    reserved
  5403.  FEh 10 BYTEs    outbound routing information
  5404. 108h 10 BYTEs    billing information, credit card etc
  5405. 112h    DWORD    remote FAX capabilities
  5406. 116h 21 BYTEs    T.30 poll code of FAX number
  5407. 12Bh 15 BYTEs    reserved
  5408. 13Ah  6 BYTEs    future expansion
  5409. 140h    WORD    structure size
  5410.  
  5411. Format of FaxBIOS SCHED_OPEN, SCHED_CANCEL command buffer:
  5412. Offset    Size    Description    (Table 2156)
  5413.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5414.  0Ch    WORD    scheduler handle
  5415.  0Eh  6 BYTEs    future expansion
  5416.  14h    WORD    structure size
  5417.  
  5418. Format of FaxBIOS SCHED_ADD_DEST command buffer:
  5419. Offset    Size    Description    (Table 2157)
  5420.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5421.  0Ch    WORD    schedule handle
  5422.  0Eh    WORD    device number if manual send wanted
  5423.  10h    WORD    non-zero if poll desired
  5424.  12h    WORD    person ID
  5425.  14h 20 BYTEs    last name
  5426.  28h 20 BYTEs    first name
  5427.  3Ch 32 BYTEs    company
  5428.  5Ch 32 BYTEs    notes
  5429.  7Ch  6 BYTEs    FAX country code
  5430.  82h  6 BYTEs    FAX city/area code
  5431.  88h 14 BYTEs    FAX local number
  5432.  96h 14 BYTEs    FAX extension
  5433.  A4h 24 BYTEs    reserved
  5434.  BCh  6 BYTEs    voice country code
  5435.  C2h  6 BYTEs    voice city/area code
  5436.  C8h 14 BYTEs    voice local number
  5437.  D6h 14 BYTEs    voice extension
  5438.  E4h 24 BYTEs    reserved
  5439.  FCh 10 BYTEs    outbound routing information
  5440. 106h 10 BYTEs    billing information, credit card etc
  5441. 110h    DWORD    remote FAX capabilities
  5442. 114h 21 BYTEs    T.30 poll code of FAX number
  5443. 129h 15 BYTEs    reserved
  5444. 138h  6 BYTEs    future expansion
  5445. 13Eh    WORD    structure size
  5446. SeeAlso: #2158
  5447.  
  5448. Format of FaxBIOS SCHED_ADD_FILE command buffer:
  5449. Offset    Size    Description    (Table 2158)
  5450.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5451.  0Ch    WORD    schedule handle
  5452.  0Eh    WORD    file type
  5453.         0000h unidentified
  5454.         0001h native file format
  5455.         0002h ASCII
  5456.         0003h FaxBIOS Tiff Class F
  5457.  10h 80 BYTEs    file name
  5458.  60h 80 BYTEs    font token
  5459.  B0h    WORD    conversion options bitmap
  5460.  B2h    WORD    resolution
  5461.         0000h standard 98 lines per inch, 204 dpi
  5462.         0001h fine 196 lines per inch, 204 dpi
  5463.         0002h Group4 300 dpi
  5464.         0003h Group4 400 dpi
  5465.  B4h    WORD    page length
  5466.         0000h 279 mm (11 in)
  5467.         0001h 297 mm (11.69 in)
  5468.         0002h 364 mm (14.33 in)
  5469.         0003h unlimited
  5470.  B6h    WORD    page width
  5471.         0000h 215 mm (8.46 in)
  5472.         0001h 255 mm (10.04 in)
  5473.         0002h 303 mm (11.93 in)
  5474.         0003h 151 mm (5.91 in)
  5475.         0004h 107 mm (4.21 in)
  5476.  B8h    WORD    binary file transfer specification
  5477.         0000h only as FAX
  5478.         0001h only as file (for non-faxable files)
  5479.         0002h as file when possible else FAX
  5480.  BAh    WORD    seam flag (nonzero for seam with next)
  5481.  BCh    WORD    delete flag (nonzero to delete when done)
  5482.  BEh  6 BYTEs    future expansion
  5483.  C4h    WORD    structure size
  5484. SeeAlso: #2157,#2159
  5485.  
  5486. Format of FaxBIOS SCHED_SET_PARAMS command buffer:
  5487. Offset    Size    Description    (Table 2159)
  5488.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5489.  0Ch    WORD    scheduler handle
  5490.  0Eh    DWORD    time to send
  5491.  10h 10 BYTEs    priority token
  5492.  1Ch 80 BYTEs    logo file token
  5493.  6Ch 80 BYTEs    signature file token
  5494.  BCh 80 BYTEs    cover page token
  5495. 10Ch 40 BYTEs    Subject text
  5496. 134h 40 BYTEs    From text
  5497. 15Ch    WORD    user ID
  5498. 15Eh  6 BYTEs    future expansion
  5499. 164h    WORD    structure size
  5500. SeeAlso: #2157,#2158,#2160
  5501.  
  5502. Format of FaxBIOS SCHED_CLOSE command buffer:
  5503. Offset    Size    Description    (Table 2160)
  5504.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5505.  0Ch    WORD    scheduler handle
  5506.  0Eh    WORD    envelope ID generated
  5507.  10h  6 BYTEs    future expansion
  5508.  16h    WORD    structure size
  5509. SeeAlso: #2159
  5510.  
  5511. Format of FaxBIOS SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
  5512. Offset    Size    Description    (Table 2161)
  5513.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5514.  0Ch    WORD    log handle
  5515.  0Eh    WORD    number of entries
  5516.  10h  6 BYTEs    future expansion
  5517.  16h    WORD    structure size
  5518.  
  5519. Format of FaxBIOS GRAPH_GET_FILE_TYPE command buffer:
  5520. Offset    Size    Description    (Table 2162)
  5521.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5522.  0Ch 80 BYTEs    filename
  5523.  5Ch    WORD    file type
  5524.         0000h unidentified
  5525.         0001h native file format
  5526.         0002h ASCII
  5527.         0003h FaxBIOS Tiff Class F
  5528.  5Eh    WORD    bitmap of supported capabilities
  5529.  60h  6 BYTEs    future expansion
  5530.  66h    WORD    structure size
  5531. SeeAlso: #2163,#2164
  5532.  
  5533. Format of FaxBIOS GRAPH_CREATE_FILE command buffer:
  5534. Offset    Size    Description    (Table 2163)
  5535.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5536.  0Ch 80 BYTEs    filename
  5537.  5Ch    WORD    graph handle
  5538.  5Eh  6 BYTEs    future expansion
  5539.  64h    WORD    structure size
  5540. SeeAlso: #2162,#2164,#2165
  5541.  
  5542. Format of FaxBIOS GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
  5543. Offset    Size    Description    (Table 2164)
  5544.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5545.  0Ch    WORD    graph handle
  5546.  0Eh  6 BYTEs    future expansion
  5547.  14h    WORD    structure size
  5548. SeeAlso: #2163,#2165
  5549.  
  5550. Format of FaxBIOS GRAPH_CREATE_PAGE command buffer:
  5551. Offset    Size    Description    (Table 2165)
  5552.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5553.  0Ch    WORD    graph handle
  5554.  0Eh    WORD    resolution
  5555.  10h    WORD    page width
  5556.  12h  6 BYTEs    future expansion
  5557.  18h    WORD    structure size
  5558. SeeAlso: #2163,#2164,#2166
  5559.  
  5560. Format of FaxBIOS GRAPH_WRITE_PAGE command buffer:
  5561. Offset    Size    Description    (Table 2166)
  5562.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5563.  0Ch    WORD    graph handle
  5564.  0Eh    DWORD    pointer to storage for image
  5565.  12h    WORD    band height in lines
  5566.  14h    WORD    width of page image in bytes
  5567.  16h    WORD    facsimile page width constant
  5568.  18h    WORD    width of page image in bits
  5569.  1Ah    WORD    number of bytes actually processed
  5570.  1Ch  6 BYTEs    future expansion
  5571.  22h    WORD    structure size
  5572. SeeAlso: #2165,#2167
  5573.  
  5574. Format of FaxBIOS GRAPH_OPEN_FILE command buffer:
  5575. Offset    Size    Description    (Table 2167)
  5576.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5577.  0Ch 80 BYTEs    filename
  5578.  5Ch    WORD    file type
  5579.  5Eh    WORD    graph handle
  5580.  60h    WORD    number of pages
  5581.  62h  6 BYTEs    future expansion
  5582.  68h    WORD    structure size
  5583. SeeAlso: #2166,#2168
  5584.  
  5585. Format of FaxBIOS GRAPH_GOTO_PAGE command buffer:
  5586. Offset    Size    Description    (Table 2168)
  5587.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5588.  0Ch    WORD    graph handle
  5589.  0Eh    WORD    page number
  5590.  10h    WORD    vertical resolution
  5591.  12h    WORD    page width
  5592.  14h    DWORD    page length
  5593.  18h  6 BYTEs    future expansion
  5594.  1Eh    WORD    structure size
  5595. SeeAlso: #2166,#2167,#2169
  5596.  
  5597. Format of FaxBIOS GRAPH_READ_PAGE command buffer:
  5598. Offset    Size    Description    (Table 2169)
  5599.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5600.  0Ch    WORD    graph handle
  5601.  0Eh    DWORD    pointer to storage for image
  5602.  12h    WORD    band height in lines
  5603.  14h    WORD    width of page image in bytes
  5604.  16h    WORD    facsimile page width constant
  5605.  18h    WORD    width of page image in bits
  5606.  1Ah    WORD    number of bytes actually processed
  5607.  1Ch  6 BYTEs    future expansion
  5608.  22h    WORD    structure size
  5609.  
  5610. Format of FaxBIOS IOCTL_ANSWER_FAX command buffer:
  5611. Offset    Size    Description    (Table 2170)
  5612.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5613.  0Ch    WORD    device number
  5614.  0Eh  6 BYTEs    future expansion
  5615.  14h    WORD    structure size
  5616. SeeAlso: #2171
  5617.  
  5618. Format of FaxBIOS IOCTL_DIAL command buffer:
  5619. Offset    Size    Description    (Table 2171)
  5620.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5621.  0Ch    WORD    device number
  5622.  0Eh  6 BYTEs    country code
  5623.  14h  6 BYTEs    city or area code
  5624.  1Ah 14 BYTEs    local number
  5625.  28h 14 BYTEs    extension
  5626.  36h 14 BYTEs    reserved
  5627.  4Eh  6 BYTEs    future expansion
  5628.  54h    WORD    structure size
  5629. SeeAlso: #2170
  5630. --------N-2F8100-----------------------------
  5631. INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
  5632.     AX = 8100h
  5633. Return: AL = FFh if installed
  5634. Program: TurboNET is a NetBIOS-based file redirector and server; a
  5635.       demonstration version may be downloaded from Nanosoft's BBS
  5636. SeeAlso: AX=8000h"TurboNET"
  5637. --------N-2F8101-----------------------------
  5638. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  5639.     AX = 8101h
  5640. Return: AL = ???
  5641.     DL = ???
  5642. --------N-2F8102-----------------------------
  5643. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  5644.     AX = 8102h
  5645. Return: AL = ???
  5646.     DL = ???
  5647. --------N-2F8103-----------------------------
  5648. INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
  5649.     AX = 8103h
  5650.     ES:DI -> 17-byte buffer
  5651. Return: buffer filled
  5652. --------N-2F8104-----------------------------
  5653. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  5654.     AX = 8104h
  5655.     BL = ???
  5656.     BH = ???
  5657.     CX = ???
  5658.     DX = ???
  5659.     DS:SI -> 16-byte buffer containing ???
  5660. Return: AL = 00h ???
  5661. --------N-2F8105-----------------------------
  5662. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  5663.     AX = 8105h
  5664.     CX = ??? (don't change current value if 0000h)
  5665.     DX = ??? (don't change current value if 0000h)
  5666. Return: AL = 00h successful
  5667. --------s-2F8200-----------------------------
  5668. INT 2F - RESPLAY - SAMPLE/PLAYBACK
  5669.     AX = 8200h
  5670.     DX:DI -> start of sample space
  5671.     CX:BX = length in bytes
  5672. Return: AX = status (see #2172)
  5673. Program: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
  5674. SeeAlso: AX=8201h"RESPLAY",AX=8210h
  5675.  
  5676. (Table 2172)
  5677. Values for RESPLAY status:
  5678.  1000h    successful
  5679.  2000h    not initialized (see AX=8210h)
  5680.  other    RESPLAY not installed
  5681. --------G-2F8200-----------------------------
  5682. INT 2F U - Nanosoft, Inc. CAPDOS - INSTALLATION CHECK
  5683.     AX = 8200h
  5684. Return: AL = FFh if installed
  5685. Program: CAPDOS is a TSR by Nanosoft, Inc. which allows INT 21h calls to be
  5686.       captured and recorded for later analysis
  5687. SeeAlso: AX=8100h,AX=8201h"CAPDOS",AX=8202h"CAPDOS",AX=8203h"CAPDOS"
  5688. SeeAlso: AX=8204h"CAPDOS"
  5689. --------s-2F8201-----------------------------
  5690. INT 2F - RESPLAY - INSTALLATION CHECK
  5691.     AX = 8201h
  5692. Return: AX = 7746h if installed
  5693. SeeAlso: AX=8202h"RESPLAY",AX=8210h
  5694. --------G-2F8201-----------------------------
  5695. INT 2F - Nanosoft, Inc. CAPDOS - CLEAR QUEUE
  5696.     AX = 8201h
  5697. Note:    resets queue of captured INT 21 calls
  5698. SeeAlso: AX=8200h"CAPDOS"
  5699. --------s-2F8202-----------------------------
  5700. INT 2F - RESPLAY - UNINSTALL
  5701.     AX = 8202h
  5702. Return: AX = status
  5703.         1000h successful
  5704. SeeAlso: AX=8201h"RESPLAY",AX=8210h"RESPLAY"
  5705. --------G-2F8202-----------------------------
  5706. INT 2F - Nanosoft, Inc. CAPDOS - START COLLECTION
  5707.     AX = 8202h
  5708. SeeAlso: AX=8200h"CAPDOS",AX=8203h"CAPDOS"
  5709. --------G-2F8203-----------------------------
  5710. INT 2F - Nanosoft, Inc. CAPDOS - STOP COLLECTION
  5711.     AX = 8203h
  5712. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8204h"CAPDOS"
  5713. --------G-2F8204-----------------------------
  5714. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE PARAMETERS
  5715.     AX = 8204h
  5716. Return: AH = flag: queue wrapped if nonzero
  5717.     BX = index of current start of queue
  5718.     CX = size of queue in entries
  5719. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8205h"CAPDOS"
  5720. --------G-2F8205-----------------------------
  5721. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE ITEM
  5722.     AX = 8205h
  5723.     BX = queue item number
  5724. Return: AX,BX,CX,DX,SI,DI,DS,ES as on entry to captured DOS call
  5725. SeeAlso: AX=8200h"CAPDOS",AX=8204h"CAPDOS"
  5726. --------s-2F8210-----------------------------
  5727. INT 2F - RESPLAY - INITIALIZE
  5728.     AX = 8210h
  5729.     BL = sound device number (see #2173)
  5730.     BH = sample rate in multiples of 250 Hz (14h to A0h)
  5731.     CL = direction
  5732.         00h playback
  5733.         01h sample
  5734. Return: AX = status (see #2172)
  5735. SeeAlso: AX=8200h"RESPLAY"
  5736.  
  5737. (Table 2173)
  5738. Values for RESPLAY sound device:
  5739.  00h    printer port LPT1
  5740.  01h    printer port LPT2
  5741.  02h    prototype board at I/O address 0300h
  5742.  03h    printer port (alternative LPT1)
  5743.  04h    internal speaker
  5744. ----------2F86-------------------------------
  5745. INT 2F U - ???
  5746.     AH = 86h
  5747.     AL = function (at least 06h and 07h)
  5748.     ???
  5749. Return: ???
  5750. Note:    called by Codeview for Windows
  5751. SeeAlso: AH=44h
  5752. --------U-2F8900-----------------------------
  5753. INT 2F - WHOA!.COM - INSTALLATION CHECK
  5754.     AX = 8900h
  5755. Return: AL = state
  5756.         00h not installed
  5757.         FFh installed
  5758. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  5759. SeeAlso: AX=8901h,AX=8902h
  5760. --------U-2F8901-----------------------------
  5761. INT 2F - WHOA!.COM - UNINSTALL
  5762.     AX = 8901h
  5763. Return: AL = status
  5764.         FDh successful
  5765.         FEh error
  5766. SeeAlso: AX=8900h
  5767. --------U-2F8902-----------------------------
  5768. INT 2F - WHOA!.COM - SET DELAY COUNT
  5769.     AX = 8902h
  5770.     BX = delay count (larger values slow system down more)
  5771. Return: AL = status
  5772.         FDh successful
  5773.         FEh error
  5774. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  5775. SeeAlso: AX=8900h
  5776. --------U-2F9000-----------------------------
  5777. INT 2F U - RAID - INSTALLATION CHECK
  5778.     AX = 9000h
  5779. Return: AL = FFh if installed
  5780. Program: RAID (Resident AID) is a TSR utility program by Ross Neilson Wentworth
  5781.       that resides mostly in EMS
  5782. --------U-2F9001-----------------------------
  5783. INT 2F U - RAID - GET ???
  5784.     AX = 9001h
  5785. Return: DX:AX -> ???
  5786. SeeAlso: AX=9000h
  5787. --------U-2F9002-----------------------------
  5788. INT 2F U - RAID - GET RESIDENT SEGMENT
  5789.     AX = 9002h
  5790. Return: AX = segment of resident (conventional memory) portion
  5791. SeeAlso: AX=9000h
  5792. --------U-2F9003-----------------------------
  5793. INT 2F U - RAID - UNINSTALL
  5794.     AX = 9003h
  5795. Return: ???
  5796. SeeAlso: AX=9000h
  5797. --------U-2F9004-----------------------------
  5798. INT 2F U - RAID - GET ???
  5799.     AX = 9004h
  5800. Return: AX = first available paragraph past end of resident portion???
  5801.     CX destroyed
  5802. SeeAlso: AX=9000h
  5803. --------e-2F92-------------------------------
  5804. INT 2F - Network Courier E-Mail - API
  5805.     AH = 92h
  5806.     AL = function
  5807.         00h installation check
  5808.         01h uninstall
  5809.         02h pop down MICRO.EXE notification window
  5810.         03h ???
  5811.         04h ???
  5812.         05h ???
  5813. Return: ???
  5814. Program: The Network Courier is an electronic mail package by Consumers
  5815.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  5816.       renamed Microsoft Mail v3.0.
  5817. SeeAlso: AX=9400h,AX=9401h,AX=9402h,AH=9Ch
  5818. Index:    installation check;Network Courier E-Mail
  5819. Index:    uninstall;Network Courier E-Mail
  5820. --------R-2F9200-----------------------------
  5821. INT 2F U - PC Tools v8.0 DRIVEMAP - BUG
  5822.     AX = 9200h
  5823. Program: DRIVEMAP is a redirector which allows drives on computers connected
  5824.       over the parallel or serial ports to appear as local drives
  5825. BUG:    jumps to data because jump table entry is 0000h
  5826. Note:    DRIVEMAP returns AX=FFFFh if not a valid function number in AL
  5827. --------R-2F9201-----------------------------
  5828. INT 2F U - PC Tools v8.0 DRIVEMAP - CHECK IF MAPPED DRIVE
  5829.     AX = 9201h
  5830.     DL = drive number (01h = A:, etc.)
  5831. Return: AL = 92h if mapped drive
  5832.     AH may be destroyed (v8.0 DRIVEMAP returns AX=0000h if not mapped)
  5833. SeeAlso: AX=9204h,AX=920Bh
  5834. --------R-2F9202-----------------------------
  5835. INT 2F U - PC Tools v8.0 DRIVEMAP - UNINSTALL
  5836.     AX = 9202h
  5837.     BX = caller's CS
  5838. Return: AX = status
  5839.         0000h failed
  5840.         nonzero successful
  5841. SeeAlso: AX=9204h
  5842. --------R-2F9203-----------------------------
  5843. INT 2F U - PC Tools v8.0 DRIVEMAP - GET VERSION
  5844.     AX = 9203h
  5845. Return: AH = major version
  5846.     AL = minor version
  5847.     CX = segment of resident code
  5848. Note:    the DRIVEMAP included with PC Tools v8.0 is version 1.00
  5849. SeeAlso: AX=9204h,INT 16/AX=FF70h
  5850. --------R-2F9204-----------------------------
  5851. INT 2F U - PC Tools v8.0 DRIVEMAP - INSTALLATION CHECK
  5852.     AX = 9204h
  5853. Return: AX = 9200h if installed
  5854.        BL = ???
  5855.        CX = segment of resident code
  5856. Program: DRIVEMAP is a redirector which allows drives on computers connected
  5857.       over the parallel or serial ports to appear as local drives
  5858. SeeAlso: AX=9201h,AX=9202h,AX=9203h
  5859. --------R-2F9205-----------------------------
  5860. INT 2F U - PC Tools v8.0 DRIVEMAP - SET ???
  5861.     AX = 9205h
  5862.     BX = ??? to set
  5863. Return: CX = new value of ???
  5864. --------R-2F9206-----------------------------
  5865. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5866.     AX = 9206h
  5867.     ???
  5868. Return: ???
  5869. --------R-2F9207-----------------------------
  5870. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  5871.     AX = 9207h
  5872.     ???
  5873. Return: AX = ???
  5874. --------R-2F9208-----------------------------
  5875. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5876.     AX = 9208h
  5877.     ???
  5878. Return: ???
  5879. --------R-2F9209-----------------------------
  5880. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5881.     AX = 9209h
  5882.     ???
  5883. Return: AX = ???
  5884.     BX = ???
  5885.     CX = ???
  5886.     DX = ???
  5887. --------R-2F920A-----------------------------
  5888. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5889.     AX = 920Ah
  5890.     BX = ???
  5891. Return: AX = ??? or FFFBh on error
  5892. --------R-2F920B-----------------------------
  5893. INT 2F U - PC Tools v8.0 DRIVEMAP - SET DRIVE MAPPING
  5894.     AX = 920Bh
  5895.     BL = drive letter (41h ['A'] = A:, etc)
  5896.     CX = ??? (0000h removes mapping)
  5897. Return: AX = ??? or FFF8h on error
  5898. SeeAlso: AX=9201h,AX=920Dh
  5899. --------R-2F920C-----------------------------
  5900. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5901.     AX = 920Ch
  5902.     ???
  5903. Return: AX = ??? (0002h)
  5904.     CX = ??? (0000h)
  5905. --------R-2F920D-----------------------------
  5906. INT 2F U - PC Tools v8.0 DRIVEMAP - GET DRIVE TYPE
  5907.     AX = 920Dh
  5908.     BL = drive letter (41h ['A'] = A:, etc)
  5909. Return: AX = type flags
  5910.         bit 0: ???
  5911.         bit 1: available
  5912.         bit 5: local
  5913.     BX = ???
  5914.     CX = segment of resident code (apparently an unintended side effect)
  5915. Program: DRIVEMAP is a redirector which allows drives on computers connected
  5916.       over the parallel or serial ports to appear as local drives
  5917. SeeAlso: AX=9218h,INT 16/AX=FF70h
  5918. --------R-2F920E-----------------------------
  5919. INT 2F U - PC Tools v8.0 DRIVEMAP - SET LPT MAPPING
  5920.     AX = 920Eh
  5921.     BX = port number (0-2)
  5922.     CX = ??? (0000h to unmap)
  5923. Return: ???
  5924. --------R-2F920F-----------------------------
  5925. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  5926.     AX = 920Fh
  5927.     ES:DI -> 3-byte buffer for ???
  5928. Return: CX = 0000h
  5929.     ES:DI buffer filled
  5930. --------R-2F9210-----------------------------
  5931. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5932.     AX = 9210h
  5933.     ???
  5934. Return: ???
  5935. --------R-2F9211-----------------------------
  5936. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  5937.     AX = 9211h
  5938.     ES:DI -> 8-word buffer for ???
  5939. Return: CX = 0000h
  5940.     ES:DI buffer filled
  5941. --------R-2F9212-----------------------------
  5942. INT 2F U - PC Tools v8.0 DRIVEMAP - CRITICAL SECTION???
  5943.     AX = 9212h
  5944.     BX = phase
  5945.         0000h leave critical section???
  5946.         nonzero enter critical section???
  5947. --------R-2F9213-----------------------------
  5948. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5949.     AX = 9213h
  5950.     BX = function number (0000h-000Bh)
  5951.     ???
  5952. Return: ???
  5953. --------R-2F9214-----------------------------
  5954. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  5955.     AX = 9214h
  5956.     ES:DI -> 6-word buffer for ???
  5957. Return: CX = 0000h
  5958.     AX = ???
  5959.     ES:DI buffer filled
  5960. --------R-2F9215-----------------------------
  5961. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  5962.     AX = 9215h
  5963.     ES:DI -> 100-word buffer for ???
  5964. Return: CX = 0000h
  5965.     ES:DI buffer filled
  5966. --------R-2F9216-----------------------------
  5967. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5968.     AX = 9216h
  5969.     ES:DI -> ???
  5970. Return: ???
  5971. --------R-2F9217-----------------------------
  5972. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5973.     AX = 9217h
  5974.     DS:SI -> 25-word buffer containing ???
  5975. Return: ???
  5976. --------R-2F9218-----------------------------
  5977. INT 2F U - PC Tools v8.0 DRIVEMAP - GET LPT TYPE???
  5978.     AX = 9218h
  5979.     BX = port number???
  5980. Return: AX = ???
  5981.     BX = ??? (0000h)
  5982.     CX = ??? (0000h)
  5983. Program: DRIVEMAP is a redirector which allows drives on computers connected
  5984.       over the parallel or serial ports to appear as local drives
  5985. --------R-2F9219-----------------------------
  5986. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5987.     AX = 9219h
  5988.     ???
  5989. Return: ???
  5990. --------R-2F921A-----------------------------
  5991. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5992.     AX = 921Ah
  5993.     ???
  5994. Return: AH = ???
  5995.     AL = ???
  5996.     BX = ???
  5997. --------R-2F921B-----------------------------
  5998. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5999.     AX = 921Bh
  6000.     ???
  6001. Return: AX = ???
  6002.     CX = segment of resident code (apparently an unintended side effect)
  6003. --------R-2F921C-----------------------------
  6004. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  6005.     AX = 921Ch
  6006.     ???
  6007. Return: ???
  6008. --------R-2F921D-----------------------------
  6009. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  6010.     AX = 921Dh
  6011. Return: AX = ???
  6012. --------R-2F921E-----------------------------
  6013. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  6014.     AX = 921Eh
  6015.     ???
  6016. Return: ???
  6017. Program: DRIVEMAP is a redirector which allows drives on computers connected
  6018.       over the parallel or serial ports to appear as local drives
  6019. Note:    this function sets two variables to 24h each
  6020. SeeAlso: INT 16/AX=FF70h
  6021. --------V-2F93-------------------------------
  6022. INT 2F - InnerMission v1.7+ - INSTALLATION CHECK
  6023.     AH = 93h
  6024.     BX = CX = AX
  6025. Return: AL = state
  6026.         FFh if installed and BX=CX=AX on entry
  6027.         BX = segment of resident code
  6028.         01h if installed but BX or CX differ from AX (multiplex number not
  6029.           available)
  6030. Program: InnerMission is a shareware graphical screen blanker by Kevin Stokes
  6031. SeeAlso: INT 14/AX=AA01h,INT 2F/AX=6400h
  6032. Index:    screen saver;InnerMission
  6033. --------e-2F9400-----------------------------
  6034. INT 2F - MICRO.EXE - INSTALLATION CHECK
  6035.     AX = 9400h
  6036. Return: AL = 07h or 08h if installed
  6037. Program: MICRO.EXE is a TSR of the Microsoft Mail part of Workgroup Connection
  6038. SeeAlso: AH=92h"Network Courier",AX=9401h,AX=9402h,AX=9403h,AX=9404h
  6039. SeeAlso: INT 21/AH=3Fh"WORKGRP.SYS"
  6040. --------e-2F9401-----------------------------
  6041. INT 2F - MICRO.EXE - SET ??? FLAG
  6042.     AX = 9401h
  6043. SeeAlso: AX=9400h,AX=9403h
  6044. --------e-2F9402-----------------------------
  6045. INT 2F - MICRO.EXE - ???
  6046.     AX = 9402h
  6047.     ???
  6048. Return: ???
  6049. SeeAlso: AX=9400h
  6050. --------e-2F9403-----------------------------
  6051. INT 2F - MICRO.EXE - SET ??? FLAG
  6052.     AX = 9403h
  6053. SeeAlso: AX=9400h,AX=9404h
  6054. --------e-2F9404-----------------------------
  6055. INT 2F - MICRO.EXE - CLEAR ??? FLAG
  6056.     AX = 9404h
  6057.     ES:DI -> name of executable from which MICRO.EXE was started
  6058. Note:    if the specified name is identical to the name of the program file
  6059.       from which MICRO was started, the ??? flag is cleared; otherwise,
  6060.       it is left unchanged
  6061. SeeAlso: AX=9400h,AX=9403h
  6062. --------V-2F96C7-----------------------------
  6063. INT 2F U - STRETCH - INSTALLATION CHECK
  6064.     AX = 96C7h
  6065. Return: AX = AAAAh if installed
  6066. Program: stretch.exe is a TSR for Toshiba Laptops with WD90C24 video chip
  6067.       to avoid blank screen areas in VGA text modes by increasing
  6068.       inter-line spacing
  6069. --------V-2F9800-----------------------------
  6070. INT 2F U - S3RMDRV.SYS - INSTALLATION CHECK / VERSION CHECK
  6071.     AX = 9800h
  6072.     BX = function
  6073.         0000h installation check
  6074.         Return: AX = 524Dh ('RM') if installed
  6075.         0001h get driver version
  6076.         Return: AX = driver version (AH=major, AL=BCD minor)
  6077. Program: S3RMDRV.SYS provides support for the S3 MPEG driver FMPDRV
  6078. SeeAlso: AX=9803h
  6079. --------V-2F9803-----------------------------
  6080. INT 2F U - S3RMDRV.SYS - COPY ??? INTO USER BUFFER
  6081.     AX = 9803h
  6082.     DX:BX -> 116-byte buffer for ASCIZ ???
  6083. Return: AX = 0000h
  6084. Note:    the examined version of the driver returns CF set for any AL other
  6085.       than 00h or 03h
  6086. SeeAlso: AX=9800h
  6087. --------l-2F9900-----------------------------
  6088. INT 2F U - DOS Navigator II - INSTALLATION CHECK
  6089.     AX = 9900h
  6090. Return:    BX = 4E44h ('ND') if installed
  6091.         AX = number of DOS Navigator executions
  6092.         CL = child process exit code
  6093.         DX = version number (2141h for version II 1.41)
  6094. Notes:    old versions of DOS Navigator II always returned AH=1, while newer
  6095.       ones return AH=0 and store AL in the DN.FLG file
  6096. Program: DOS Navigator is a multi-window shell for MS-DOS by RIT S.R.L.
  6097.       DOS Navigator(TM) is a registered trademark of RIT S.R.L.
  6098. SeeAlso: AX=9901h,AX=9902h,AX=9903h
  6099. --------l-2F9901-----------------------------
  6100. INT 2F U - DOS Navigator II - RETURN POINTER TO COMMAND LINE
  6101.     AX = 9901h
  6102. Return: ES:BX -> command line (terminated with 0Dh)
  6103.     AX = ES
  6104. SeeAlso: AX=9900h,AX=9902h,AX=9903h
  6105. --------l-2F9902-----------------------------
  6106. INT 2F U - DOS Navigator II - SET 'TRUE' EXIT CODE OF DN.PRG
  6107.     AX = 9902h
  6108.     CL = exit code
  6109. Return: AX destroyed
  6110. SeeAlso: AX=9900h,AX=9901h,AX=9903h
  6111. --------l-2F9903-----------------------------
  6112. INT 2F U - DOS Navigator II - SPECIFY HOW TO EXECUTE COMMANDS
  6113.     AX = 9903h
  6114.     CL = 1 to use INT 2E
  6115.     CL <> 1 to use INT 21/AH=4Bh
  6116. SeeAlso: AX=9900h,AX=9901h,AX=9902h
  6117. --------e-2F9C-------------------------------
  6118. INT 2F - Network Courier E-Mail OPERATOR.EXE - API
  6119.     AH = 9Ch
  6120.     AL = subfunction
  6121.         01h uninstall
  6122. Return: ???
  6123. Program: The Network Courier is an electronic mail package by Consumers
  6124.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  6125.       renamed Microsoft Mail v3.0.
  6126. SeeAlso: AH=92h
  6127. Index:    uninstall;Network Courier E-Mail OPERATOR.EXE
  6128. --------G-2F9E00-----------------------------
  6129. INT 2F U - INTMON v2.1 - INSTALLATION CHECK
  6130.     AX = 9E00h
  6131. Return: AX = FFFFh if installed
  6132.         BX = segment of resident code
  6133. Program: INTMON is a shareware interactive interrupt monitoring TSR for 386
  6134.       and higher machines by Celso Minnitti, Jr.
  6135. SeeAlso: AX=9E01h,AX=9E02h,AX=9E03h,AX=9F00h
  6136. --------G-2F9E01-----------------------------
  6137. INT 2F U - INTMON v2.1 - RESET
  6138.     AX = 9E01h
  6139. Return: ???
  6140. Desc:    this function specifies that INTMON should assume that any interrupts
  6141.       on which it is currently awaiting a return have completed (i.e.
  6142.       interrupts which never return such as INT 20 and INT 27)
  6143. SeeAlso: AX=9E00h,AX=9E03h
  6144. --------G-2F9E02-----------------------------
  6145. INT 2F U - INTMON v2.1 - DISPLAY CPU REGISTERS???
  6146.     AX = 9E02h
  6147. Return: ???
  6148. SeeAlso: AX=9E00h
  6149. --------G-2F9E03-----------------------------
  6150. INT 2F U - INTMON v2.1 - HOOK INTERRUPT???
  6151.     AX = 9E03h
  6152.     BH = interrupt number???
  6153. Return: ???
  6154. Note:    if AL > 03h on entry, INTMON 2.1 returns immediately
  6155. SeeAlso: AX=9E00h,AX=9E01h
  6156. --------G-2F9F00-----------------------------
  6157. INT 2F U - INTCFG v2.1 - INSTALLATION CHECK
  6158.     AX = 9F00h
  6159. Return: AX = FFFFh if installed
  6160. Program: INTCFG is an optionally-resident control program for INTMON by Celso
  6161.       Minnitti, Jr.
  6162. SeeAlso: AX=9E00h,AX=9F01h,AX=9F30h,AX=9F49h
  6163. --------G-2F9F01-----------------------------
  6164. INT 2F U - INTCFG v2.1 - ???
  6165.     AX = 9F01h
  6166.     ???
  6167. Return: ???
  6168. SeeAlso: AX=9F00h
  6169. --------G-2F9F30-----------------------------
  6170. INT 2F U - INTCFG v2.1 - GET ???
  6171.     AX = 9F30h
  6172. Return: AX = ??? (0002h)
  6173. SeeAlso: AX=9F00h
  6174. --------G-2F9F49-----------------------------
  6175. INT 2F U - INTCFG v2.1 - UNINSTALL
  6176.     AX = 9F49h
  6177. Return: AX,DX,DS,ES destroyed
  6178. SeeAlso: AX=9F00h
  6179. --------E-2FA1--BX0081-----------------------
  6180. INT 2F - Ergo DOS extenders - INSTALLATION CHECK
  6181.     AH = A1h
  6182.     BX = 0081h
  6183.     AL = which
  6184.         FEh OS/286,OS/386
  6185.         FFh HummingBoard DOS extender
  6186.     ES:DI -> 16-byte buffer
  6187. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  6188. Note:    since TKERNEL is a licensed version, it is likely that subfunctions
  6189.       BX=0082h and BX=0084h are present and function identically to the
  6190.       AX=FBA1h/BX=008xh calls
  6191. SeeAlso: AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  6192. --------m-2FA189-----------------------------
  6193. INT 2F U - Biologic HRAMDEV.SYS - API
  6194.     AX = A189h
  6195.     BX = subfunction
  6196.         0000h set ???
  6197.         0001h remove ???
  6198.         0002h get status ???
  6199.         0003h enable ???
  6200.         0004h disable ???
  6201.         0005h set ??? flag
  6202.         0006h clear ??? flag
  6203.         0007h set ??? flag
  6204.         0008h clear ??? flag
  6205.         0009h set ???
  6206.     ES:DI -> function-specific arguments
  6207.         if func 0000h: 20-byte buffer containing ???
  6208.         if func 0001h: 20-byte buffer for returned ???
  6209.         if func 0002h: 16-byte buffer for returned ???
  6210.         if func 0009h: WORD containing ???
  6211. Return: BX = A189h if installed
  6212.     AH = status
  6213.         00h successful
  6214.         FFh failed or invalid function number
  6215. Program: HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
  6216.       provides improved high memory access under MS-DOS 5.0
  6217. Note:    functions 00h and 01h use a stack of four entries; function 01h always
  6218.       removes the values stored with the most recent function 00h call
  6219.       which has not yet been matched with a function 01h call.
  6220. --------U-2FA4E0-----------------------------
  6221. INT 2F - Futurus Team - INSTALLATION CHECK
  6222.     AX = A4E0h
  6223. Return: AL = 52h ("R") if installed
  6224.         AH = major version plus 30h ("0")
  6225.         ES:BX -> ??? (INT A4 handler???)
  6226. Note:    older versions of Right Hand Man (from which Team evolved) store the
  6227.       signature "RH" at offset 103h in the INT 2F handler's segment
  6228. SeeAlso: INT A4"Right Hand Man"
  6229. --------U-2FA900-----------------------------
  6230. INT 2F - METZTSR.COM - INSTALLATION CHECK
  6231.     AX = A900h
  6232.     CF set
  6233. Return: CF clear if resident
  6234.         AX = 97FFh
  6235.     CF set if not present
  6236. Notes:    METZTSR.COM prevents METZ applications (such as the MAGIC screen
  6237.       saver) inactivity timeout while running a DOSapp under MS Windows.
  6238.     the default multiplex number is A9h, but may be set to any value from
  6239.       80h to FFh with a commandline switch
  6240. SeeAlso: AX=A901h,AX=A902h
  6241. --------U-2FA901-----------------------------
  6242. INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY
  6243.     AX = A901h
  6244.     CF set
  6245. Return: CF clear if successful
  6246.         AX:DX = BIOS time at which INT 09 was last invoked
  6247.     CF set if not present
  6248. SeeAlso: INT 09,INT 1A/AH=00h
  6249. --------U-2FA902-----------------------------
  6250. INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG
  6251.     AX = A902h
  6252.     BL = new value
  6253.         00h Ctrl-Alt-Del not allowed
  6254.         else Ctrl-Alt-Del allowed (startup default is 01h)
  6255.     CF set
  6256. Return: CF clear if successful
  6257.         AX = 97FFh
  6258.     CF set if not resident
  6259. SeeAlso: AX=A903h
  6260. --------U-2FA903-----------------------------
  6261. INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG
  6262.     AX = A903h
  6263.     CF set
  6264. Return: CF clear if successful
  6265.         AX = 97FFh if Ctrl-Alt-Del allowed
  6266.         AX = 0000h if Ctrl-Alt-Del not allowed
  6267.     CF set if not resident
  6268. SeeAlso: AX=A902h
  6269. --------U-2FAA-------------------------------
  6270. INT 2F - Player's Tool 3.996b+ - UNINSTALL
  6271.     AH = AAh
  6272. Return: AL = status
  6273.         00h unloaded successfully
  6274.         01h unable to unload: in DOS shell
  6275. Program: Player's Tool is a game cheater by Dima Yakunin & Andy Robinson
  6276. SeeAlso: AH=ABh"Player's Tool",AH=ACh"Player's Tool",INT 10/AH=AAh
  6277. --------U-2FAA00-----------------------------
  6278. INT 2F - VIDCLOCK.COM - INSTALLATION CHECK
  6279.     AX = AA00h
  6280. Return: AL = 00h not installed
  6281.          FFh installed
  6282. Program: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
  6283. --------U-2FAB-------------------------------
  6284. INT 2F - Player's Tool 3.996b+ - INSTALLATION CHECK
  6285.     AH = ABh
  6286. Return: BH = FFh if installed
  6287.         BL = DOS shell state
  6288.         01h in DOS shell
  6289.         00h not in DOS shell
  6290. SeeAlso: AH=AAh"Player's Tool",AH=ACh"Player's Tool",INT 10/AH=ABh
  6291. --------f-2FAB00-----------------------------
  6292. INT 2F - Btrieve Multi-User - INSTALLATION CHECK
  6293.     AX = AB00h
  6294. Return: AL = 4Dh if installed
  6295. SeeAlso: AX=AB01h,AX=AB02h,INT 7B"Btrieve"
  6296. ----------2FAB00-----------------------------
  6297. INT 2F - SRSoft MODAL PC v2+ - INSTALLATION CHECK / GET VERSION
  6298.     AX = AB00h
  6299. Return: AX = 5253h ('SR' byte-swapped) if installed
  6300.         BX = MODAL PC version (BL = major, BH = minor)
  6301. Program: MODAL PC is an algorithm/real-system simulation package by SR Soft
  6302.       using Petri-nets to describe simulated objects
  6303. SeeAlso: AX=AB01h"MODAL",AX=AB02h"MODAL",AX=AB06h"MODAL"
  6304. --------f-2FAB01-----------------------------
  6305. INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION
  6306.     AX = AB01h
  6307.     BX = process ID
  6308.     DS:DX -> 38-byte parameter record (see #3011 at INT 7B"Btrieve")
  6309. Return: AL = status
  6310.         00h OK
  6311.         other retry after calling INT 7F/AX=0200h
  6312. SeeAlso: AX=AB00h"Btrieve",AX=AB02h"Btrieve",INT 7B"Btrieve",INT 7F/AX=0200h
  6313. ----------2FAB01-----------------------------
  6314. INT 2F - SRSoft MODAL PC v2+ - GET PROCESS RUN PARAMETER
  6315.     AX = AB01h
  6316. Return: AX = 5253h ('SR' byte-swapped) if installed
  6317.     BL = run parameter
  6318.         00h normal process
  6319.         01h run with tracing enabled
  6320.         02h run initialization process (first thread of main task)
  6321. SeeAlso: AX=AB00h"MODAL",AX=AB02h"MODAL"
  6322. --------f-2FAB02-----------------------------
  6323. INT 2F - Btrieve Multi-User - GET NEW PROCESS ID
  6324.     AX = AB02h
  6325. Return: AL = 00h successful
  6326.         BX = process ID
  6327.     AL > 00h failed, retry after calling INT 7F/AX=0200h
  6328. SeeAlso: AX=AB00h,AX=AB01h,INT 7B"Btrieve",INT 7F/AX=0200h
  6329. ----------2FAB02-----------------------------
  6330. INT 2F - SRSoft MODAL PC v2+ - SET PROCESS EXIT CODE
  6331.     AX = AB02h
  6332.     BL = exit code
  6333. Return: AX = 5253h ('SR' byte-swapped) if installed
  6334. SeeAlso: AX=AB00h"MODAL",AX=AB01h"MODAL",AX=AB03h"MODAL"
  6335. ----------2FAB03-----------------------------
  6336. INT 2F - SRSoft MODAL PC v2+ - ALLOCATE COMMON MEMORY
  6337.     AX = AB03h
  6338.     BX = required size of common memory for variables/semaphores in bytes
  6339. Return: AX = 5253h ('SR' byte-swapped) if installed
  6340. SeeAlso: AX=AB00h"MODAL",AX=AB02h"MODAL",AX=AB04h"MODAL"
  6341. ----------2FAB04-----------------------------
  6342. INT 2F - SRSoft MODAL PC v2+ - GET ALL COMMON VARIABLES AND SEMAPHORES
  6343.     AX = AB04h
  6344.     DS:DX -> buffer for common data
  6345. Return: AX = 5253h ('SR' byte-swapped) if installed
  6346.     CF clear if successful
  6347.     CF set on error
  6348. SeeAlso: AX=AB00h"MODAL",AX=AB03h"MODAL",AX=AB05h"MODAL",AX=AB06h,AX=AB07h
  6349. ----------2FAB05-----------------------------
  6350. INT 2F - SRSoft MODAL PC v2+ - SET ALL COMMON VARIABLES AND SEMAPHORES
  6351.     AX = AB05h
  6352.     DS:DX -> buffer containing common data
  6353. Return: AX = 5253h ('SR' byte-swapped) if installed
  6354.     CF clear if successful
  6355.     CF set on error
  6356. SeeAlso: AX=AB00h"MODAL",AX=AB03h"MODAL",AX=AB04h"MODAL",AX=AB06h,AX=AB07h
  6357. ----------2FAB06-----------------------------
  6358. INT 2F - SRSoft MODAL PC v2+ - GET A COMMON VARIABLE OR SEMAPHORE
  6359.     AX = AB06h
  6360.     BX = offset of variable or semaphore in common memory
  6361.     CX = variable/semaphore size in bytes
  6362.     DS:DX -> buffer for variable or semaphore
  6363. Return: AX = 5253h ('SR' byte-swapped) if installed
  6364.     CF clear if successful
  6365.     CF set on error
  6366. SeeAlso: AX=AB00h"MODAL",AX=AB04h,AX=AB05h,AX=AB07h
  6367. ----------2FAB07-----------------------------
  6368. INT 2F - SRSoft MODAL PC v2+ - SET A COMMON VARIABLE OR SEMAPHORE
  6369.     AX = AB07h
  6370.     BX = offset of variable or semaphore in common memory
  6371.     CX = variable/semaphore size in bytes
  6372.     DS:DX -> buffer containing variable or semaphore
  6373. Return: AX = 5253h ('SR' byte-swapped) if installed
  6374.     CF clear if successful
  6375.     CF set on error
  6376. SeeAlso: AX=AB00h"MODAL",AX=AB04h,AX=AB05h,AX=AB06h
  6377. --------U-2FAC-------------------------------
  6378. INT 2F u - Player's Tool 3.996b+ - POP UP
  6379.     AH = ACh
  6380. Return: AX = 1001h
  6381. SeeAlso: AH=AAh"Player's Tool",AH=ABh"Player's Tool"
  6382. --------V-2FAC00-----------------------------
  6383. INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
  6384.     AX = AC00h
  6385. Return: AX = FFFFh
  6386.     ES:DI -> ??? (graphics data?) (not documented)
  6387. Note:    this installation check was moved here to avoid the conflict with the
  6388.       CD-ROM extensions that occurred in DOS 4.00
  6389. SeeAlso: AX=1500h"GRAPHICS"
  6390. --------V-2FAC00DI1092-----------------------
  6391. INT 2F - QRIP/TSR - GIVE CPU TO QRIP
  6392.     AX = AC00h
  6393.     DI = 1092h
  6394. Return: nothing
  6395. Program: QRIP/TSR is a shareware TSR by Shane Hathaway implementing the Remote
  6396.       Imaging Protocol (RIP, RIPscrip) used by several BBS systems to
  6397.       provide a graphical user interface
  6398. Desc:    give QRIP some CPU time to update music and flashing timers
  6399. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6400.     this function should be called regularly whenever the terminal program
  6401.       is otherwise idle; the updates are automatically performed on any
  6402.       other QRIP call
  6403. SeeAlso: AX=AC01h,AX=ACF0h
  6404. --------V-2FAC01DI1092-----------------------
  6405. INT 2F - QRIP/TSR - CHANGE INTERNAL FLAGS
  6406.     AX = AC01h
  6407.     DI = 1092h
  6408.     BX = flags to be turned on (see #2174)
  6409.     CX = flags to be turned off (see #2174)
  6410. Return: AX = 9142h if installed
  6411.         DX = DOS-takeover flag (nonzero if QRIP able to take over DOS)
  6412.         ---if DX nonzero---
  6413.         BX = QRIP version number in hex (BH = major, BL = minor)
  6414.         CX = new flags (see #2174)
  6415. Note:    if DI <> 1092h on entry, QRIP chains the call
  6416. SeeAlso: AX=AC00h/DI=1092h,AX=ACF0h
  6417.  
  6418. Bitfields for QRIP internal flags:
  6419. Bit(s)    Description    (Table 2174)
  6420.  0    ANSI emulation enabled (default on)
  6421.  1    RIP emulation enabled (default on)
  6422.  2    graphical commands allowed (default on)
  6423.  3    TTY text allowed (default on)
  6424.  4    disable @ variables (default off in TSR mode)
  6425.  5    wait for key on RIP "end scene" command (default off)
  6426.  6    anti-stripping (default off in TSR mode)
  6427.  7    sound enabled (default on)
  6428.  8    automatic message filter (default off in TSR mode)
  6429.  9    display-only mode (no user prompts)
  6430.  10    TTY text suppression (default off in TSR mode)
  6431.  11-15    reserved
  6432. --------V-2FAC02DI1092-----------------------
  6433. INT 2F - QRIP/TSR - TURN OFF GRAPHICS SCREEN
  6434.     AX = AC02h
  6435.     DI = 1092h
  6436. Return: nothing
  6437. Note:    if DI <> 1092h on entry, QRIP chains the call
  6438. SeeAlso: AX=AC03h,AX=ACF0h
  6439. --------V-2FAC03DI1092-----------------------
  6440. INT 2F - QRIP/TSR - TURN ON GRAPHICS SCREEN
  6441.     AX = AC03h
  6442.     DI = 1092h
  6443. Return: nothing
  6444. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6445.     this function does not restore the contents of the screen (see AX=AC15h)
  6446. SeeAlso: AX=AC02h,AX=AC14h,AX=AC15h
  6447. --------V-2FAC04DI1092-----------------------
  6448. INT 2F - QRIP/TSR - OUTPUT STRING THROUGH QRIP
  6449.     AX = AC04h
  6450.     DI = 1092h
  6451.     DX:BX -> string
  6452.     CX = length of string
  6453. Return: nothing
  6454. Note:    if DI <> 1092h on entry, QRIP chains the call
  6455. SeeAlso: AX=AC05h,AX=AC09h,AX=AC0Ah,AX=ACF0h
  6456. --------V-2FAC05DI1092-----------------------
  6457. INT 2F - QRIP/TSR - OUTPUT NULL-TERMINATED STRING THROUGH QRIP
  6458.     AX = AC05h
  6459.     DI = 1092h
  6460.     DX:BX -> ASCIZ string
  6461. Return: nothing
  6462. Note:    if DI <> 1092h on entry, QRIP chains the call
  6463. SeeAlso: AX=AC04h,AX=AC06h,AX=AC09h,AX=AC0Ah,AX=ACF0h
  6464. --------V-2FAC06DI1092-----------------------
  6465. INT 2F - QRIP/TSR - RECEIVE CHARACTERS FROM QRIP
  6466.     AX = AC06h
  6467.     DI = 1092h
  6468. Return: AX = character to send to BBS (0001h-00FFh) or special code (see #2175)
  6469.     BX = string-waiting flag
  6470.         0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
  6471.     CX = DX = AX
  6472. Note:    if DI <> 1092h on entry, QRIP chains the call
  6473. SeeAlso: AX=AC04h,AX=AC05h,AX=AC0Ch,AX=AC16h,AX=AC18h,AX=AC1Ah
  6474.  
  6475. (Table 2175)
  6476. Values for QRIP special codes:
  6477.  0000h    if none
  6478.  0100h    wait for user keypress (must call AX=AC16h/BL=00h or AX=AC18h)
  6479.  0101h    both/middle mouse button pressed
  6480.  0102h    entering block mode (up/download) (call AX=AC1Ah)
  6481.  0103h    right mouse button pressed
  6482.  0104h    BBS requested status bar on
  6483.  0105h    BBS requested status bar off
  6484.  0106h    BBS requested VT-102 terminal emulation
  6485.     (keypad keys should send VT-102 escape codes)
  6486.  0107h    BBS requested VT-102 mode off
  6487.  0108h    BBS requested doorway mode (raw IBM keyboard ASCII/scan code pairs)
  6488.  0109h    BBS requested doorway mode off
  6489.  010Ah    hotkey mode on
  6490.  010Bh    hotkey mode off
  6491.  010Ch    BBS requested Tab-key button changing on
  6492.  010Dh    BBS requested Tab-key mode off
  6493.  010Eh    XOFF (use flow control to stop incoming characters)
  6494.  010Fh    XON (use flow control to resume incoming characters)
  6495.  0110h-0119h BBS requested application (0-9) be run
  6496.     application 0 should be a standard text editor
  6497.  01FFh    send ASCII 00h to BBS
  6498. Note:    for special codes 0104h to 010Dh, the terminal program should report
  6499.       any mode changes it make in response by calling AX=AC16h
  6500. --------V-2FAC07DI1092-----------------------
  6501. INT 2F - QRIP/TSR - GET FONT DIRECTORY
  6502.     AX = AC07h
  6503.     DI = 1092h
  6504. Return: DX:BX -> 80-byte internal buffer containing ASCIZ font directory name
  6505. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6506.     the application may change the font directory by overwriting the
  6507.       returned buffer, ensuring that it does not exceed 80 bytes incl. NUL
  6508.     if changed, the new path will not become effective until the graphics
  6509.       screen is reinitialized
  6510. SeeAlso: AX=AC08h,AX=ACF0h
  6511. --------V-2FAC08DI1092-----------------------
  6512. INT 2F - QRIP/TSR - GET ICON DIRECTORY
  6513.     AX = AC08h
  6514.     DI = 1092h
  6515. Return: DX:BX -> 80-byte internal buffer containing ASCIZ icon directory name
  6516. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6517.     the application may change the icon directory by overwriting the
  6518.       returned buffer, ensuring that it does not exceed 80 bytes incl. NUL,
  6519.       and includes a trailing backslash
  6520.     if changed, the new path becomes effective immediately
  6521. SeeAlso: AX=AC07h,AX=ACF0h
  6522. --------V-2FAC09DI1092-----------------------
  6523. INT 2F - QRIP/TSR - OUTPUT STRING THROUGH QRIP
  6524.     AX = AC09h
  6525.     DI = 1092h
  6526.     DX:BX -> string
  6527.     CX = length of string
  6528. Return: AX = character to send to BBS (0001h-00FFh) or special code (see #2175)
  6529.     BX = string-waiting flag
  6530.         0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
  6531.     CX = DX = AX
  6532. Note:    if DI <> 1092h on entry, QRIP chains the call
  6533. SeeAlso: AX=AC04h,AX=AC06h,AX=AC0Ah,AX=ACF0h
  6534. --------V-2FAC0ADI1092-----------------------
  6535. INT 2F - QRIP/TSR - OUTPUT NULL-TERMINATED STRING THROUGH QRIP
  6536.     AX = AC0Ah
  6537.     DI = 1092h
  6538.     DX:BX -> ASCIZ string
  6539. Return: AX = character to send to BBS (0001h-00FFh) or special code (see #2175)
  6540.     BX = string-waiting flag
  6541.         0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
  6542.     CX = DX = AX
  6543. Note:    if DI <> 1092h on entry, QRIP chains the call
  6544. SeeAlso: AX=AC05h,AX=AC06h,AX=AC09h,AX=ACF0h
  6545. --------V-2FAC0BDI1092-----------------------
  6546. INT 2F - QRIP/TSR - EXECUTE RIP "END SCENE" COMMAND
  6547.     AX = AC0Bh
  6548.     DI = 1092h
  6549. Return: nothing
  6550. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6551.     enables all mouse buttons and cancels the RIP timeout
  6552. SeeAlso: AX=AC01h,AX=AC04h,AX=ACF0h
  6553. --------V-2FAC0CDI1092-----------------------
  6554. INT 2F - QRIP/TSR - GET STRING TO BE SENT TO BBS
  6555.     AX = AC0Ch
  6556.     DI = 1092h
  6557. Return: AX = status
  6558.         0000h nothing to be sent
  6559.         0001h a string is waiting to be sent
  6560.         DX:BX -> string to be sent (may contain NULs)
  6561.         CX = length of string
  6562.         0002h special code waiting (call AX=AC06h)
  6563. Note:    if DI <> 1092h on entry, QRIP chains the call
  6564. SeeAlso: AX=AC06h,AX=ACF0h
  6565. --------V-2FAC0DDI1092-----------------------
  6566. INT 2F - QRIP/TSR - SET PROTECTED SCREEN AREA
  6567.     AX = AC0Dh
  6568.     DI = 1092h
  6569.     CL = number of text lines at bottom of screen to protect (00h = off)
  6570.     BL = attribute with which to fill area (bit 7 = high-int. background)
  6571. Return: nothing
  6572. Note:    if DI <> 1092h on entry, QRIP chains the call
  6573. SeeAlso: AX=AC0Eh,AX=AC0Fh,AX=AC10h,AX=ACF0h
  6574. --------V-2FAC0EDI1092-----------------------
  6575. INT 2F - QRIP/TSR - WRITE ASCIZ STRING IN PROTECTED AREA
  6576.     AX = AC0Eh
  6577.     DI = 1092h
  6578.     DX:BX -> ASCIZ string to be written
  6579.     CL = column at which to begin writing
  6580.     CH = row number within protected area (00h = first line)
  6581. Return: nothing
  6582. Note:    if DI <> 1092h on entry, QRIP chains the call
  6583. SeeAlso: AX=AC0Dh,AX=AC0Fh,AX=AC10h,AX=ACF0h
  6584. --------V-2FAC0FDI1092-----------------------
  6585. INT 2F - QRIP/TSR - SCROLL PROTECTED AREA
  6586.     AX = AC0Fh
  6587.     DI = 1092h
  6588.     BH,BL = row,column of upper-left corner in protected area
  6589.     DH,DL = row,column of lower-right corner
  6590.     CL = number of lines to scroll up
  6591. Return: nothing
  6592. Note:    if DI <> 1092h on entry, QRIP chains the call
  6593. SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC10h,AX=ACF0h
  6594. --------V-2FAC10DI1092-----------------------
  6595. INT 2F - QRIP/TSR - SET OUTPUT COLOR FOR PROTECTED AREA
  6596.     AX = AC10h
  6597.     DI = 1092h
  6598.     BL = new attribute (bit 7 set for high-intensity background)
  6599. Return: nothing
  6600. Note:    if DI <> 1092h on entry, QRIP chains the call
  6601. SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC0Fh,AX=AC11h,AX=ACF0h
  6602. --------V-2FAC11DI1092-----------------------
  6603. INT 2F - QRIP/TSR - CONVERT PROTECTED AREA TO ENTIRE SCREEN
  6604.     AX = AC11h
  6605.     DI = 1092h
  6606.     BX = mode (0000h = normal protect, 0001h = allow full-screen access)
  6607. Note:    if DI <> 1092h on entry, QRIP chains the call
  6608. SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC0Fh,AX=AC10h,AX=AC12h,AX=ACF0h
  6609. --------V-2FAC12DI1092-----------------------
  6610. INT 2F - QRIP/TSR - BEGIN POPUP-WINDOW MODE
  6611.     AX = AC12h
  6612.     DI = 1092h
  6613. Return: nothing
  6614. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6615.     while popup-mode is in effect, the terminal program can write to the
  6616.       screen (and easily restore it) by outputting a RIP file with AX=AC04h
  6617.       or AX=AC05h
  6618.     QRIP will automatically drop out of popup-window mode if the terminal
  6619.       program invokes RIP pick-lists
  6620.     any changes to the protected area will be restored when popup-window
  6621.       mode is cancelled
  6622. SeeAlso: AX=AC04h,AX=AC11h,AX=AC13h,AX=ACF0h
  6623. --------V-2FAC13DI1092-----------------------
  6624. INT 2F - QRIP/TSR - END POPUP-WINDOW MODE
  6625.     AX = AC13h
  6626.     DI = 1092h
  6627. Return: nothing
  6628. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6629.     restores screen
  6630. SeeAlso: AX=AC12h,AX=ACF0h
  6631. --------V-2FAC14DI1092-----------------------
  6632. INT 2F - QRIP/TSR - SAVE GRAPHICS SCREEN AND SWITCH TO TEXT MODE
  6633.     AX = AC14h
  6634.     DI = 1092h
  6635. Return: nothing
  6636. Note:    if DI <> 1092h on entry, QRIP chains the call
  6637. SeeAlso: AX=AC03h,AX=AC15h
  6638. --------V-2FAC15DI1092-----------------------
  6639. INT 2F - QRIP/TSR - RESTORE GRAPHICS SCREEN
  6640.     AX = AC15h
  6641.     DI = 1092h
  6642. Return: nothing
  6643. Desc:    restores the graphics screen saved by the last call to AX=AC14h
  6644. Note:    if DI <> 1092h on entry, QRIP chains the call
  6645. SeeAlso: AX=AC03h,AX=AC14h
  6646. --------V-2FAC16DI1092-----------------------
  6647. INT 2F - QRIP/TSR - REPORT MODE CHANGE TO QRIP
  6648.     AX = AC16h
  6649.     DI = 1092h
  6650.     BL = new mode
  6651.         00h terminate key wait
  6652.         01h status bar on
  6653.         02h status bar off
  6654.         03h VT-102 mode on
  6655.         04h VT-102 mode off
  6656.         05h doorway mode on
  6657.         06h doorway mode off
  6658.         07h hotkeys mode on
  6659.         08h hotkeys mode off
  6660.         09h tabkey mode on
  6661.         0Ah tabkey mode off
  6662. Return: nothing
  6663. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6664.     all modes default to OFF when QRIP is first installed
  6665. --------V-2FAC17DI1092-----------------------
  6666. INT 2F - QRIP/TSR - CALL (EXECUTE) A RIP FILE
  6667.     AX = AC17h
  6668.     DI = 1092h
  6669.     DX:BX -> ASCIZ filename for RIP file to be executed
  6670. Return: nothing
  6671. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6672.     the specified file may be in the current icon directory, the QRIP
  6673.       startup directory, or the current directory; any pathnames specified
  6674.       with the filename are ignored
  6675. --------V-2FAC18DI1092-----------------------
  6676. INT 2F - QRIP/TSR - SEND USER KEY TO QRIP
  6677.     AX = AC18h
  6678.     DI = 1092h
  6679.     BX = key (00xxh is normal ASCII, xx00h is an extended key)
  6680. Return: nothing
  6681. Note:    if DI <> 1092h on entry, QRIP chains the call
  6682. SeeAlso: AX=AC06h,AX=ACF0h
  6683. --------V-2FAC19DI1092-----------------------
  6684. INT 2F - QRIP/TSR - HANGUP
  6685.     AX = AC19h
  6686.     DI = 1092h
  6687. Return: nothing
  6688. Desc:    inform QRIP that carrier has been lost
  6689. Note:    if DI <> 1092h on entry, QRIP chains the call
  6690. SeeAlso: AX=ACF0h
  6691. --------V-2FAC1ADI1092-----------------------
  6692. INT 2F - QRIP/TSR - GET RIP_ENTER_BLOCK_MODE INFORMATION
  6693.     AX = AC1Ah
  6694.     DI = 1092h
  6695. Return: AH = requested protocol (see #2176)
  6696.     AL = file type (see #2177)
  6697.     DX:BX -> ASCIZ filename or 0000h:0000h
  6698.     CX = length of filename
  6699. Note:    if DI <> 1092h on entry, QRIP chains the call
  6700. SeeAlso: AX=ACF0h
  6701.  
  6702. (Table 2176)
  6703. Values for QRIP protocol identifier:
  6704.  00h    Xmodem (checksum)
  6705.  01h    Xmodem-CRC
  6706.  02h    Xmodem-1K
  6707.  03h    Xmodem-1K-G
  6708.  04h    Kermit
  6709.  05h    Ymodem
  6710.  06h    Ymodem-G
  6711.  07h    Zmodem with crash recovery
  6712.  08h-0Fh same as 00h-07h, but for uploading instead of downloading
  6713. SeeAlso: #2177
  6714.  
  6715. (Table 2177)
  6716. Values for QRIP file type:
  6717.  00h    RIP file sequence to be displayed
  6718.  01h    RIP file sequence to be stored in icon directory
  6719.  02h    ICN file sequence to be stored in icon directory
  6720.  03h    HLP file sequence to be stored, then auto-loaded if needed
  6721.  04h    COMPOSITE DYNAMIC file sequence (batch protocols only)
  6722.  05h    ACTIVE DYNAMIC file sequence (batch protocols only)
  6723. Note:    for file types 04h and 05h, any .RIP or .ICN files are stored in
  6724.       the icon directory; in mode 05h, any .RIP files are also played
  6725.       back as they are received
  6726. SeeAlso: #2176
  6727. --------V-2FAC1BDI1092-----------------------
  6728. INT 2F - QRIP/TSR - SET SYSTEM FONT SIZE
  6729.     AX = AC1Bh
  6730.     DI = 1092h
  6731.     BX = font size (see #2178)
  6732. Return: nothing
  6733. Note:    if DI <> 1092h on entry, QRIP chains the call
  6734. SeeAlso: AX=AC04h,AX=ACF0h
  6735.  
  6736. (Table 2178)
  6737. Values for QRIP font size specifier:
  6738.  00h    8x8 font, 80x43 screen
  6739.  01h    7x8 font, 90x43 screen
  6740.  02h    8x14 font, 80x25 screen
  6741.  03h    7x14 font, 90x25 screen
  6742.  04h    16x14 font, 40x25 screen
  6743. --------V-2FACF0DI1092-----------------------
  6744. INT 2F - QRIP/TSR - INSTALLATION CHECK
  6745.     AX = ACF0h
  6746.     DI = 1092h
  6747. Return: AX = 9142h if installed
  6748.         DX = DOS-takeover flag (nonzero if QRIP able to take over DOS)
  6749.         ---if DX nonzero---
  6750.         BX = QRIP version number in hex (BH = major, BL = minor)
  6751.         CX = current flags (see AX=AC01h)
  6752. Note:    if DI <> 1092h on entry, QRIP chains the call
  6753. SeeAlso: AX=AC00h/DI=1092h,AX=AC01h,AX=AC04h,AX=AC06h,AX=AC1Ah,AX=ACFFh
  6754. --------V-2FACFFDI1092-----------------------
  6755. INT 2F - QRIP/TSR - UNINSTALL
  6756.     AX = ACFFh
  6757.     DI = 1092h
  6758. Return: AX = status
  6759.         0000h unable to remove (interrupt vector hooked by another prog)
  6760.         0001h successful
  6761.         0002h unable to take over DOS at this time (retry uninstall)
  6762. Note:    if DI <> 1092h on entry, QRIP chains the call
  6763. SeeAlso: AX=ACF0h
  6764. --------V-2FAD00-----------------------------
  6765. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
  6766.     AX = AD00h
  6767. Return: AL = FFh if installed
  6768.         BX = ??? (0100h for MS-DOS 3.3+)
  6769. Note:    DOS 5+ DISPLAY.SYS chains to previous handler if AL is not one of the
  6770.       subfunctions listed here
  6771. SeeAlso: AX=AD01h"DISPLAY",AX=AD02h"DISPLAY"
  6772. --------O-2FAD00-----------------------------
  6773. INT 2F U - DR DOS 3.41-5.0, Novell DOS 7 KEYB - INSTALLATION CHECK
  6774.     AX = AD00h
  6775. Return: AX = FFFFh if installed
  6776.     flags destroyed
  6777. SeeAlso: AX=AD80h"Novell"
  6778. --------V-2FAD01-----------------------------
  6779. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ACTIVE CODE PAGE
  6780.     AX = AD01h
  6781.     BX = new code page (see #1060 at INT 21/AX=6602h)
  6782. Return: CF clear if successful
  6783.         AX = 0001h
  6784.     CF set on error (unsupported code page)
  6785.         AX = 0000h
  6786. SeeAlso: AX=AD02h"DISPLAY"
  6787. --------O-2FAD01-----------------------------
  6788. INT 2F U - DR DOS 3.41,5.0 KEYB - GET CONFIGURATION
  6789.     AX = AD01h
  6790. Return: BX = current code page (see #1060 at INT 21/AX=6602h)
  6791.     CX = current keyboard layout (0100h = US, 0102h = foreign)
  6792.     ES = resident code segment
  6793. SeeAlso: AX=AD00h"KEYB",AX=AD02h"KEYB",AX=AD83h"KEYB"
  6794. --------V-2FAD02-----------------------------
  6795. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ACTIVE CODE PAGE
  6796.     AX = AD02h
  6797. Return: CF set if code page never set
  6798.         AX = 0001h
  6799.         BX = FFFFh (assume first hardware code page)
  6800.     CF clear if successful
  6801.         BX = current code page (see #1060 at INT 21/AX=6602h)
  6802. SeeAlso: AX=AD01h"DISPLAY",AX=AD03h
  6803. --------O-2FAD02-----------------------------
  6804. INT 2F U - Novell DOS 7 KEYB - ???
  6805.     AX = AD02h
  6806.     DX = ??? (0000h)
  6807. Return: AX = FFFFh if installed
  6808.     flags destroyed
  6809. SeeAlso: AX=AD01h"KEYB"
  6810. --------V-2FAD03-----------------------------
  6811. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET CODE PAGE INFORMATION
  6812.     AX = AD03h
  6813.     ES:DI -> buffer for code page information (see #2179)
  6814.     CX = size of buffer in bytes
  6815. Return: CF set if buffer too small
  6816.     CF clear if successful
  6817.         ES:DI buffer filled
  6818. SeeAlso: AX=AD01h,AX=AD02h
  6819.  
  6820. Format of DOS 5.0-6.0 DISPLAY.SYS code page information:
  6821. Offset    Size    Description    (Table 2179)
  6822.  00h    WORD    number of software code pages
  6823.  02h    WORD    ??? (0003h)
  6824.  04h    WORD    number of hardware code pages
  6825.  06h  N WORDs    hardware code page numbers (see #1060 at INT 21/AX=6602h)
  6826.       N WORDs    software (prepared) code pages (FFFFh if not yet prepared)
  6827. --------V-2FAD04-----------------------------
  6828. INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
  6829.     AX = AD04h
  6830.     ???
  6831. Return: ???
  6832. --------V-2FAD10-----------------------------
  6833. INT 2F U - DOS 4.x DISPLAY.SYS internal - INSTALLATION CHECK???
  6834.     AX = AD10h
  6835.     ???
  6836. Return: AX = FFFFh
  6837.     BX = ??? (0100h in PC-DOS 4.01)
  6838. --------V-2FAD10-----------------------------
  6839. INT 2F U - DOS 5+ DISPLAY.SYS internal - ???
  6840.     AX = AD10h
  6841.     ???
  6842. Return: CF clear if successful
  6843.     CF set on error
  6844. Note:    this function is a NOP if the active code page has never been set
  6845.       (AX=AD02h returns BX=FFFFh); its purpose otherwise is not known
  6846. --------V-2FAD40-----------------------------
  6847. INT 2F - DOS 4.0+ - ???
  6848.     AX = AD40h
  6849.     DX = ???
  6850.     ???
  6851. Return: ???
  6852. Note:    called by PC-DOS 4.01 PRINT.COM
  6853. --------K-2FAD80-----------------------------
  6854. INT 2F u - MS-DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
  6855.     AX = AD80h
  6856. Return: AL = FFh if installed
  6857.         BX = version number (BH = major, BL = minor)
  6858.         ES:DI -> internal data (see #2180)
  6859.         AH destroyed (set to FFh by some implementations/versions)
  6860. Notes:    MS-DOS 3.30, PC-DOS 4.01, and MS-DOS 5.00 all report version 1.00.
  6861.     this function was undocumented prior to the release of DOS 5.0
  6862. SeeAlso: AX=AD80h"Novell",AX=AD81h,AX=AD82h,AX=AD83h
  6863.  
  6864. Format of KEYB internal data:
  6865. Offset    Size    Description    (Table 2180)
  6866.  00h    DWORD    original INT 09
  6867.  04h    DWORD    original INT 2F
  6868.  08h  6 BYTEs    ???
  6869.  0Eh    WORD    flags (see #2181)
  6870.  10h    BYTE    ???
  6871.  11h    BYTE    ???
  6872.  12h  4 BYTEs    ???
  6873.  16h  2 BYTEs    country ID letters
  6874.  18h    WORD    current code page (see #1060 at INT 21/AX=6602h)
  6875. ---DOS 3.3---
  6876.  1Ah    WORD    pointer to first item in list of code page tables???
  6877.  1Ch    WORD    pointer to ??? item in list of code page tables
  6878.  1Eh  2 BYTEs    ???
  6879.  20h    WORD    pointer to key translation data (see #2183)
  6880.  22h    WORD    pointer to last item in code page table list (see #2182)
  6881.  24h  9 BYTEs    ???
  6882. ---DOS 4.01---
  6883.  1Ah  2 BYTEs    ???
  6884.  1Ch    WORD    pointer to first item in list of code page tables???
  6885.  1Eh    WORD    pointer to ??? item in list of code page tables
  6886.  20h  2 BYTEs    ???
  6887.  22h    WORD    pointer to key translation data (see #2183)
  6888.  24h    WORD    pointer to last item in code page table list (see #2182)
  6889.  26h  9 BYTEs    ???
  6890. Note:    at least in MS-DOS v6.22, the signature "SHARED DATA" immediately
  6891.       precedes this structure
  6892.  
  6893. Bitfields for MS-DOS v6.22 KEYB flags:
  6894. Bit(s)    Description    (Table 2181)
  6895.  15    INT 16/AH=1xh supported (INT 16h/AH=92h call returns AH<=80h)
  6896.  14    INT 16/AH=2xh supported (INT 16h/AH=A2h call returns AH<=80h)
  6897.  13    unused (0)
  6898.  12    network installed (INT 2F/AX=B800h)
  6899.  11    original IBM PC (BIOS date 1981)
  6900.  10    PC or PC/XT (BIOS machine type byte of FBh or FEh)
  6901.  9    PC Convertible (BIOS machine type byte of F9h); use INT 15/AX=4104h
  6902.  8    unused (0)
  6903.  7    IBM PS/2 model 30 (BIOS machine type byte of FAh)
  6904.  6    IBM AT (BIOS machine type FCh)
  6905.  5    IBM PS/2 (BIOS machine type F8h)
  6906.  4    PS/2 and unknown only:
  6907.     non-standard 8042 or no AT->PC scancode translation???
  6908.  3    temporary flag???
  6909.  2-0    ???
  6910. SeeAlso: #2180
  6911.  
  6912. Format of code page table list entries:
  6913. Offset    Size    Description    (Table 2182)
  6914.  00h    WORD    pointer to next item, FFFFh = last
  6915.  02h    WORD    code page (see #1060 at INT 21/AX=6602h)
  6916.  04h  2 BYTEs    ???
  6917.  
  6918. Format of KEYB translation data:
  6919. Offset    Size    Description    (Table 2183)
  6920.  00h    WORD    size of data in bytes, including this word
  6921.  02h N-2 BYTEs    ???
  6922. --------K-2FAD80-----------------------------
  6923. INT 2F u - Novell DOS 7 KEYB.COM - INSTALLATION CHECK
  6924.     AX = AD80h
  6925. Return: AX = FFFFh if installed
  6926.         CX = Novell DOS KEYB version number (CL = major, CH = minor)
  6927.         DX = current keyboard codepage
  6928.         ES:DI -> internal data and tables (ES=FFFEh if KEYB in HMA)
  6929.     flags destroyed
  6930. Note:    versions: v2.08 (original ship 4/94), v2.09 (Update 10, 11/18/94),
  6931.       v2.10 (Update 12, 2/22/95), v2.11 (Update 13, 5/8/95),
  6932.       v2.12 (Update 14, 7/31/95)
  6933. SeeAlso: AX=AD80h"MS-DOS"
  6934. --------K-2FAD81-----------------------------
  6935. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
  6936.     AX = AD81h
  6937.     BX = code page (see #1060 at INT 21/AX=6601h)
  6938. Return: CF set on error
  6939.         AX = 0001h (code page not available)
  6940.     CF clear if successful
  6941. Notes:    called by DISPLAY.SYS
  6942.     this function was undocumented prior to the release of DOS 5.0
  6943. SeeAlso: AX=AD80h,AX=AD82h
  6944. --------K-2FAD82-----------------------------
  6945. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
  6946.     AX = AD82h
  6947.     BL = new state
  6948.         00h US keyboard (Control-Alt-F1)
  6949.         FFh foreign keyboard (Control-Alt-F2)
  6950. Return: CF set on error (BL not 00h or FFh)
  6951.     CF clear if successful
  6952. Note:    this function was undocumented prior to the release of DOS 5.0
  6953. SeeAlso: AX=AD80h,AX=AD81h,AX=AD83h
  6954. --------K-2FAD83-----------------------------
  6955. INT 2F - DOS 5+ KEYB.COM - GET KEYBOARD MAPPING
  6956.     AX = AD83h
  6957. Return: BL = current state
  6958.         00h US keyboard
  6959.         FFh foreign keyboard
  6960. SeeAlso: AX=AD82h
  6961. --------l-2FAE00-----------------------------
  6962. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
  6963.     AX = AE00h
  6964.     DX = magic value FFFFh
  6965.     CH = FFh
  6966.     CL = length of command line tail (4DOS v4.0)
  6967.     DS:BX -> command line buffer (see #2184)
  6968.     DS:SI -> command name buffer (see #2185)
  6969.     DI = 0000h (4DOS v4.0)
  6970. Return: AL = FFh if this command is a TSR extension to COMMAND.COM
  6971.     AL = 00h if the command should be executed as usual
  6972. Notes:    This call provides a mechanism for TSRs to install permanent
  6973.       extensions to the command repertoire of COMMAND.COM.    It appears
  6974.       that COMMAND.COM makes this call before executing the current
  6975.       command line, and does not execute it itself if the return is FFh.
  6976.     APPEND hooks this call, to allow subsequent APPEND commands to
  6977.       execute without re-running APPEND
  6978. SeeAlso: AX=AE01h
  6979.  
  6980. Format of COMMAND.COM command line buffer:
  6981. Offset    Size    Description    (Table 2184)
  6982.  00h    BYTE    max length of command line, as in INT 21/AH=0Ah
  6983.  01h    BYTE    count of bytes to follow, excluding terminating 0Dh
  6984.       N BYTEs    command line text, terminated by 0Dh
  6985.  
  6986. Format of command name buffer:
  6987. Offset    Size    Description    (Table 2185)
  6988.  00h    BYTE    length of command name
  6989.  01h  N BYTEs    uppercased command name (blank-padded to 11 chars by 4DOS v4)
  6990. --------l-2FAE01-----------------------------
  6991. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
  6992.     AX = AE01h
  6993.     DX = magic value FFFFh
  6994.     CH = 00h
  6995.     CL = length of command name (4DOS v4.0)
  6996.     DS:BX -> command line buffer (see #2184)
  6997.     DS:SI -> command name buffer (see #2185)
  6998. Return: DS:SI buffer updated
  6999.       if length byte is nonzero, the following bytes contain the uppercase
  7000.       internal command to execute and the command line buffer contains the
  7001.       command's parameters (the first DS:[SI] bytes are ignored)
  7002. Notes:    this call requests execution of the command which a previous call to
  7003.       AX=AE00h indicated was resident
  7004.     APPEND hooks this call
  7005. BUG:    Novell DOS 7.0's COMMAND.COM (prior to Update 12) will attempt to run
  7006.       a disk program with the indicated name even if the returned length
  7007.       byte is zero, because the register used to flag this case is
  7008.       clobbered without first checking it.    The workaround is to set the
  7009.       command name buffer to "REM" followed by enough blanks to pad out
  7010.       the original command's length, which will also work with MS-DOS 6.
  7011.       (from padgett@tccslr.dnet.mmc.com)
  7012. SeeAlso: AX=AE00h
  7013. --------O-2FAF00-----------------------------
  7014. INT 2F - WinDOS v2.11 - INSTALLATION CHECK
  7015.     AX = AF00h
  7016. Return: AL = FFh if installed
  7017. Program: WinDOS is a DOS clone (claimed to be mostly MS-DOS 5.0 API compatible)
  7018.       written by Heiko Goemann
  7019. SeeAlso: AX=AF01h"WinDOS",INT 21/AH=30h
  7020. ----------2FAF00-----------------------------
  7021. INT 2F U - ???
  7022.     AX = AF00h
  7023.     ???
  7024. Return: AX = 0000h if interface supported
  7025. SeeAlso: AX=AF02h,AX=AF03h,AX=AF04h,AX=AF13h,AX=AF30h
  7026. --------O-2FAF01-----------------------------
  7027. INT 2F - WinDOS v2.11 - TURN ON ONLINE MODE
  7028.     AX = AF01h
  7029. Return: nothing
  7030. Desc:    indicate that the user will not exchange floppy disks, allowing WinDOS
  7031.       to cache disk sectors in memory and avoid writing modified sectors
  7032.       back out to the floppy disk
  7033. SeeAlso: AX=AF00h"WinDOS",AX=AF02h"WinDOS"
  7034. --------O-2FAF02-----------------------------
  7035. INT 2F - WinDOS v2.11 - TURN OFF ONLINE MODE
  7036.     AX = AF02h
  7037. Return: nothing
  7038. Desc:    indicate that the floppy disk may be removed, and that WinDOS should
  7039.       write all buffered sectors out to the floppy disk
  7040. SeeAlso: AX=AF00h"WinDOS",AX=AF01h"WinDOS"
  7041. ----------2FAF02-----------------------------
  7042. INT 2F U - ???
  7043.     AX = AF02h
  7044.     ???
  7045. Return: ES = ???
  7046. SeeAlso: AX=AF00h
  7047. --------O-2FAF03-----------------------------
  7048. INT 2F - WinDOS v2.11 - TURN VIDMEM ON
  7049.     AX = AF03h
  7050. Return: AX = status
  7051.         0000h successful
  7052.         0001h CPU not in mode set by DOS386=On
  7053.         0002h video adapter in graphics mode
  7054.         0003h memory chain corrupted
  7055. SeeAlso: AX=AF00h"WinDOS",AX=AF04h"WinDOS",AX=AF05h"WinDOS"
  7056. ----------2FAF03-----------------------------
  7057. INT 2F U - ???
  7058.     AX = AF03h
  7059.     ???
  7060. Return: DX = ???
  7061. SeeAlso: AX=AF00h
  7062. --------O-2FAF04-----------------------------
  7063. INT 2F - WinDOS v2.11 - TURN VIDMEM OFF
  7064.     AX = AF04h
  7065. Return: AX = status
  7066.         0000h successful
  7067.         0001h video memory is in use
  7068. SeeAlso: AX=AF00h"WinDOS",AX=AF03h"WinDOS",AX=AF05h"WinDOS"
  7069. ----------2FAF04-----------------------------
  7070. INT 2F U - ???
  7071.     AX = AF04h
  7072.     ???
  7073. Return: ???
  7074. SeeAlso: AX=AF00h
  7075. --------O-2FAF05-----------------------------
  7076. INT 2F - WinDOS v2.11 - GET VIDMEM STATE
  7077.     AX = AF05h
  7078. Return: AX = status (0000h off, 0001h on)
  7079. SeeAlso: AX=AF00h"WinDOS",AX=AF03h"WinDOS",AX=AF04h"WinDOS"
  7080. ----------2FAF05-----------------------------
  7081. INT 2F U - ???
  7082.     AX = AF05h
  7083.     ???
  7084. Return: ???
  7085. SeeAlso: AX=AF00h
  7086. --------O-2FAF06-----------------------------
  7087. INT 2F - WinDOS v2.11 - MAKE PROGRAM UNBREAKABLE
  7088.     AX = AF06h
  7089.     DS:DX -> break handler
  7090.     DI:BX = stack to use for break handler
  7091. Return: nothing
  7092. Desc:    set a handler which should be invoked when Ctrl-C is pressed instead of
  7093.       aborting the program
  7094. SeeAlso: AX=AF00h"WinDOS",AX=AF0Ah"WinDOS",AX=AF0Ch"WinDOS"
  7095. --------O-2FAF07-----------------------------
  7096. INT 2F - WinDOS v2.11 - SIGNAL FATAL OVERLAY FAULT
  7097.     AX = AF07h
  7098. Return: never -- system reset
  7099. Desc:    pop up a window indicating that the system overlay file can not be
  7100.       loaded
  7101. SeeAlso: AX=AF00h"WinDOS",AX=AF08h"WinDOS"
  7102. --------O-2FAF08-----------------------------
  7103. INT 2F - WinDOS v2.11 - SIGNAL RECOVERABLE OVERLAY FAULT
  7104.     AX = AF08h
  7105. Return: nothing
  7106. Desc:    pop up a window requesting that a disk containing SH.OVL be inserted
  7107. SeeAlso: AX=AF00h"WinDOS",AX=AF07h"WinDOS",AX=AF0Bh
  7108. --------O-2FAF09-----------------------------
  7109. INT 2F - WinDOS v2.11 - GET TERMINATED PSP
  7110.     AX = AF09h
  7111. Return: DS = PSP segment of most recently ended TSR
  7112. SeeAlso: AX=AF00h"WinDOS",AX=AF0Ah
  7113. --------O-2FAF0A-----------------------------
  7114. INT 2F - WinDOS v2.11 - GET MAIN SHELL PSP
  7115.     AX = AF0Ah
  7116. Return: AX = shell's PSP (same as DS on last call to AX=AF06h)
  7117. Desc:    get the PSP address of the last program to call AX=AF06h (normally
  7118.       the main command interpreter)
  7119. SeeAlso: AX=AF00h"WinDOS",AX=AF06h"WinDOS",AX=AF09h
  7120. --------O-2FAF0B-----------------------------
  7121. INT 2F - WinDOS v2.11 - SIGNAL FATAL ERROR
  7122.     AX = AF0Bh
  7123. Return: never -- system reset
  7124. Desc:    pop up a window indicating a terminal system error
  7125. SeeAlso: AX=AF00h"WinDOS",AX=AF07h,AX=AF08h,AX=AF15h"WinDOS"
  7126. --------O-2FAF0C-----------------------------
  7127. INT 2F - WinDOS v2.11 - GET OTHER MAIN SHELL PARAMETERS
  7128.     AX = AF0Ch
  7129. Return: DI:AX = stack
  7130.     SI = offset of break handler
  7131. Desc:    retrieve the parameters last set by AX=AF06h (normally by the main
  7132.       command interpreter)
  7133. SeeAlso: AX=AF00h"WinDOS",AX=AF06h"WinDOS"
  7134. --------O-2FAF0D-----------------------------
  7135. INT 2F - WinDOS v2.11 - GET CURRENT PARAMETER
  7136.     AX = AF0Dh
  7137.     BX = offset of desired parameter in global data area
  7138. Return: AX = current value of parameter (AH undefined if byte value)
  7139. SeeAlso: AX=AF00h"WinDOS",AX=AF0Eh
  7140. --------O-2FAF0E-----------------------------
  7141. INT 2F - WinDOS v2.11 - SET CURRENT PARAMETER BYTE VALUE
  7142.     AX = AF0Eh
  7143.     BX = offset of desired parameter in global data area
  7144.     DL = new value of parameter
  7145. Return: nothing
  7146. SeeAlso: AX=AF00h"WinDOS",AX=AF0Dh
  7147. --------O-2FAF0F-----------------------------
  7148. INT 2F - WinDOS v2.11 - GET HISTORY SEGMENT
  7149.     AX = AF0Fh
  7150. Return: AX = segment of buffer for input history, or 0000h if none
  7151. SeeAlso: AX=AF00h"WinDOS",AX=AF10h"WinDOS"
  7152. --------O-2FAF10-----------------------------
  7153. INT 2F - WinDOS v2.11 - SET HISTORY SEGMENT
  7154.     AX = AF10h
  7155.     BX = segment of new buffer for input history
  7156. Return: nothing
  7157. Note:    the buffer must have been allocated with INT 21/AH=48h
  7158. SeeAlso: AX=AF00h"WinDOS",AX=AF0Fh"WinDOS"
  7159. --------O-2FAF11-----------------------------
  7160. INT 2F - WinDOS v2.11 - FREE XMS BLOCKS
  7161.     AX = AF11h
  7162. Return: nothing
  7163. Desc:    free all XMS blocks whose XMS identification value (see AX=AF12h)
  7164.       equals the current PSP
  7165. SeeAlso: AX=AF00h"WinDOS",AX=AF12h"WinDOS",INT 21/AH=50h
  7166. --------O-2FAF12-----------------------------
  7167. INT 2F - WinDOS v2.11 - SET XMS IDENTIFICATION VALUE
  7168.     AX = AF12h
  7169.     DS = new XMS identification value (normally caller's PSP segment)
  7170. Return: nothing
  7171. SeeAlso: AX=AF00h"WinDOS",AX=AF11h"WinDOS"
  7172. ----------2FAF12-----------------------------
  7173. INT 2F U - ???
  7174.     AX = AF12h
  7175.     ???
  7176. Return: ES = ???
  7177. SeeAlso: AX=AF00h
  7178. --------O-2FAF13-----------------------------
  7179. INT 2F - WinDOS v2.11 - SET ASSIGN VALUE
  7180.     AX = AF13h
  7181.     BL = number of drive to remap (00h = A:)
  7182.     DL = number of drive to be accessed via drive number BL
  7183. Return: nothing
  7184. Desc:    remap a drive letter
  7185. Note:    the remapping can be canceled by specifying DL=BL
  7186. SeeAlso: AX=AF00h"WinDOS",AX=AF14h"WinDOS",AX=0601h
  7187. ----------2FAF13-----------------------------
  7188. INT 2F U - ???
  7189.     AX = AF13h
  7190.     ???
  7191. Return: ???
  7192. SeeAlso: AX=AF00h
  7193. --------O-2FAF14-----------------------------
  7194. INT 2F - WinDOS v2.11 - GET ASSIGN VALUE
  7195.     AX = AF14h
  7196.     BL = drive number (00h = A:)
  7197. Return: DL = drive number which is actually accessed by drive number BL
  7198. Desc:    determine the current mapping for a drive
  7199. SeeAlso: AX=AF00h"WinDOS",AX=AF13h"WinDOS",AX=0601h
  7200. --------O-2FAF15-----------------------------
  7201. INT 2F - WinDOS v2.11 - SIGNAL STACK ERROR
  7202.     AX = AF15h
  7203. Return: never -- system reset
  7204. Desc:    pop up a window indicating a stack overflow
  7205. SeeAlso: AX=AF00h"WinDOS",AX=AF0Bh"WinDOS"
  7206. --------O-2FAF16-----------------------------
  7207. INT 2F - WinDOS v2.11 - GET SIMPLE TRUENAME
  7208.     AX = AF16h
  7209.     DS:SI -> path to be canonicalized
  7210.     ES:DI -> buffer for canonicalized filename/pathname
  7211. Return: CF clear if successful
  7212.         AX = 0000h
  7213.     CF set on error
  7214.         AX = DOS error code (see #0980 at INT 21/AH=59h)
  7215. Desc:    partially canonicalize a path, omitting SUBST, JOIN, ASSIGN, and
  7216.       network redirections
  7217. SeeAlso: AX=AF00h"WinDOS",INT 21/AH=60h
  7218. --------O-2FAF17-----------------------------
  7219. INT 2F - WinDOS v2.11 - QUERY FOR NEW CURRENT DRIVE
  7220.     AX = AF17h
  7221. Return: nothing
  7222. Desc:    pop up a dialog allowing the user to select a new default drive
  7223. SeeAlso: AX=AF00h"WinDOS"
  7224. --------O-2FAF18-----------------------------
  7225. INT 2F - WinDOS v2.11 - SET CTRL-C/CTRL-BREAK DISABLE FLAG
  7226.     AX = AF18h
  7227.     DL = new break-checking state (00h enabled, 01h disabled)
  7228. Return: nothing
  7229. SeeAlso: AX=AF00h"WinDOS"
  7230. --------O-2FAF19-----------------------------
  7231. INT 2F - WinDOS v2.11 - SET HEAD SETTLE FLAG
  7232.     AX = AF19h
  7233.     DL = new state
  7234.         00h diskette head settling time reset to 15ms before each access
  7235.         01h no additional head settling time used between accesses
  7236. Return: nothing
  7237. SeeAlso: AX=AF00h"WinDOS"
  7238. --------O-2FAF1A-----------------------------
  7239. INT 2F - WinDOS v2.11 - SEARCH FOR NON-FRAGMENTED DISK AREA
  7240.     AX = AF1Ah
  7241.     BL = drive (00h = current, 01h = A:, etc.)
  7242.     CX = number of clusters desired
  7243. Return: CF clear if successful
  7244.         DI = first free cluster on logical drive
  7245.         BP = first cluster of contiguous free area
  7246.         AX destroyed
  7247.     CF set on error
  7248.         AX = DOS error code (see #0980 at INT 21/AH=59h)
  7249. Desc:    attempt to find an area of the disk containing the specified number
  7250.       of contiguous unallocated clusters
  7251. SeeAlso: AX=AF00h"WinDOS"
  7252. ----------2FAF30-----------------------------
  7253. INT 2F U - ???
  7254.     AX = AF30h
  7255.     ???
  7256. Return: ???
  7257. SeeAlso: AX=AF00h
  7258. --------d-2FAFDE-----------------------------
  7259. INT 2F - Disk-Emu - INSTALLATION CHECK / GET VERSION
  7260.     AX = AFDEh
  7261.     ES:DI -> 14-byte buffer for data (see #2186)
  7262. Return: AX = CFDEh (Carlos Fernandez Disk-Emu) if installed
  7263.         BX = version (BH = major, BL = minor)
  7264.  
  7265. Format of Disk-Emu information data:
  7266. Offset    Size    Description    (Table 2186)
  7267.  00h    BYTE    number of tracks
  7268.  01h    BYTE    sectors per track
  7269.  02h    WORD    bytes per sector
  7270.  04h    BYTE    number of heads
  7271.  05h    BYTE    flag: 00h inactive, 01h active
  7272.  06h    BYTE    write protection (00h none, 01h full, 02h pseudo)
  7273.  07h    BYTE    saved (00h some unsaved data, 01h all data saved)
  7274.  08h    BYTE    disk in memory (00h no, 01h yes)
  7275.  09h    WORD    EMS handle
  7276.  0Bh    WORD    XMS handle
  7277.  0Dh    BYTE    memory type used for disk (00h XMS, 01h EMS)
  7278. --------V-2FB000-----------------------------
  7279. INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
  7280.     AX = B000h
  7281. Return: AL = status
  7282.         00h not installed, OK to install
  7283.         01h not installed, not OK to install
  7284.         FFh installed
  7285. Notes:    called by DISPLAY.SYS
  7286.     documented for DOS 5.0, but undocumented in prior versions
  7287. SeeAlso: AX=2300h,AX=2E00h,AX=B001h
  7288. --------V-2FB001-----------------------------
  7289. INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
  7290.     AX = B001h
  7291.     DS:BX -> DWORD buffer for address of 8x8 font table
  7292. Return: buffer filled
  7293.     AL = FFh
  7294. Note:    PC-DOS 3.30/4.01 and MS-DOS 6.0 set the font table offset to 0130h,
  7295.       MS-DOS 3.30 sets it to 0030h
  7296. SeeAlso: AH=2Eh"GRAFTABL",AX=B000h
  7297. --------I-2FB400-----------------------------
  7298. INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
  7299.     AX = B400h
  7300. Return: AL = FFh if installed
  7301. --------I-2FB401-----------------------------
  7302. INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
  7303.     AX = B401h
  7304. Return: ES -> host screen buffer (PC ASCII format)
  7305.     ES unchanged if communications not started
  7306. --------I-2FB402-----------------------------
  7307. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  7308.     AX = B402h
  7309.     BX = ???
  7310. Return: ???
  7311. --------I-2FB403-----------------------------
  7312. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  7313.     AX = B403h
  7314.     ???
  7315. Return: ???
  7316. --------I-2FB404-----------------------------
  7317. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  7318.     AX = B404h
  7319.     ???
  7320. Return: ???
  7321. --------I-2FB405-----------------------------
  7322. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  7323.     AX = B405h
  7324.     ???
  7325. Return: ???
  7326. --------f-2FB700-----------------------------
  7327. INT 2F - APPEND - INSTALLATION CHECK
  7328.     AX = B700h
  7329. Return: AL = status
  7330.         00h not installed
  7331.         FFh installed
  7332. Note:    MS-DOS 3.30 APPEND refuses to install itself when run inside TopView or
  7333.       a TopView-compatible environment
  7334. SeeAlso: AX=B702h
  7335. --------f-2FB701-----------------------------
  7336. INT 2F U - APPEND v3.21 only - GET APPEND PATH
  7337.     AX = B701h
  7338. Return: ES:DI -> active APPEND path
  7339. Notes:    the only version of APPEND known to support this call is the APPEND
  7340.       shipped with Microtek MS-DOS 3.21; MS-DOS 3.30-6.00 APPEND displays
  7341.       "Incorrect APPEND Version" and aborts the caller
  7342.     use AX=B704h first, and only call this function if that one is not
  7343.       supported
  7344. SeeAlso: AX=B700h,AX=B704h
  7345. --------f-2FB702-----------------------------
  7346. INT 2F - APPEND - GET VERSION
  7347.     AX = B702h
  7348. Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
  7349.     AL = major version number
  7350.     AH = minor version number, otherwise
  7351. SeeAlso: AX=B700h,AX=B710h
  7352. --------f-2FB703-----------------------------
  7353. INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
  7354.     AX = B703h
  7355.     ES:DI -> INT 21 handler APPEND should chain to
  7356. Return: ES:DI -> APPEND's INT 21 handler
  7357. Note:    each invocation of this function toggles a flag which APPEND uses to
  7358.       determine whether to chain to the user handler or the original
  7359.       INT 21
  7360. SeeAlso: AX=B700h,AX=B706h
  7361. --------f-2FB704-----------------------------
  7362. INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
  7363.     AX = B704h
  7364. Return: ES:DI -> active APPEND path (128 bytes max)
  7365. Note:    some versions of append do not support this call, and return ES
  7366.       unchanged; in this case, you should call AX=B701h to get the APPEND
  7367.       path
  7368. SeeAlso: AX=B701h
  7369. --------f-2FB706-----------------------------
  7370. INT 2F - DOS 4.0+ APPEND - GET APPEND FUNCTION STATE
  7371.     AX = B706h
  7372. Return: BX = APPEND state (see #2187)
  7373. SeeAlso: AX=B700h,AX=B707h
  7374.  
  7375. Bitfields for APPEND state:
  7376. Bit(s)    Description    (Table 2187)
  7377.  0    set if APPEND enabled
  7378.  1-11    reserved
  7379.  12    (DOS 5.0) set if APPEND applies directory search even if a drive has
  7380.       been specified
  7381.  13    set if /PATH flag active
  7382.  14    set if /E flag active (environment var APPEND exists)
  7383.  15    set if /X flag active
  7384. --------f-2FB707-----------------------------
  7385. INT 2F - DOS 4.0+ APPEND - SET APPEND FUNCTION STATE
  7386.     AX = B707h
  7387.     BX = APPEND state bits (see #2187)
  7388. SeeAlso: AX=B700h,AX=B706h
  7389. --------f-2FB710-----------------------------
  7390. INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
  7391.     AX = B710h
  7392. Return: AX = current APPEND state (see #2187)
  7393.     BX = ??? (0000h in MS-DOS 3.30 and 5.00)
  7394.     CX = ??? (0000h in MS-DOS 3.30 and 5.00)
  7395.     DL = major version
  7396.     DH = minor version
  7397. SeeAlso: AX=B700h,AX=B702h
  7398. --------f-2FB711-----------------------------
  7399. INT 2F - DOS 4.0+ APPEND - SET RETURN FOUND NAME STATE
  7400.     AX = B711h
  7401. Note:    if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
  7402.       6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename
  7403.       is written over top of the filename passed to the INT 21h call.  The
  7404.       application must provide a sufficiently large buffer.     This state is
  7405.       reset after the next INT 21h call processed by APPEND.
  7406.     APPEND uses the byte at offset 3Dh in the PSP
  7407.       (see #0691 at INT 21/AH=26h) to store the flag telling it to
  7408.       overwrite the filename
  7409. BUG:    DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
  7410.       INT 21/AH=6Ch
  7411. SeeAlso: INT 21/AH=26h,INT 21/AH=4Eh
  7412. --------N-2FB800-----------------------------
  7413. INT 2F - NETWORK - INSTALLATION CHECK
  7414.     AX = B800h
  7415. Return: AL = status
  7416.         00h        not installed
  7417.         nonzero installed
  7418.           BX = installed component flags (test in this order!)
  7419.            bit 6   server
  7420.            bit 2   messenger
  7421.            bit 7   receiver
  7422.            bit 3   redirector
  7423.            bit 1   LANPUP (LANtastic 4.0)
  7424. Notes:    this function is supported by PC LAN Program, LAN Manager, LANtastic,
  7425.       NetWare Lite, SilverNET, 10NET, etc.
  7426.     LANtastic and NetWare Lite use only BL for the return value, preserving
  7427.       BH; LAN Manager and DOS LAN Requester return BH=00h.    This permits
  7428.       differentiation between those two groups by setting BH to a nonzero
  7429.       value before the call and checking its value on return.
  7430. SeeAlso: AX=4E53h,AX=B809h
  7431. --------N-2FB800CXF041-----------------------
  7432. INT 2F - 10NET - INSTALLATION CHECK
  7433.     AX = B800h
  7434.     CX = F041h
  7435. Return: AL = status
  7436.         00h        not installed
  7437.         nonzero installed
  7438.         BX = installed component flags (test in this order!)
  7439.            bit 6   server
  7440.            bit 2   messenger
  7441.            bit 7   receiver
  7442.            bit 3   redirector
  7443.            bit 1   LANPUP (LANtastic 4.0)
  7444.         CX = 10Net data segment
  7445.         CX:DX -> 10Net Configuration Table
  7446.               (see #0991 at INT 21/AX=5E01h"10NET")
  7447. Note:    if CX <> F041h on entry, neither CX nor DX will be changed, and this
  7448.       call becomes identical to the standard installation check above
  7449. SeeAlso: AX=B800h"network",INT 21/AX=5E01h"10NET"
  7450. --------N-2FB803-----------------------------
  7451. INT 2F - NETWORK - GET NETWORK EVENT POST HANDLER
  7452.     AX = B803h
  7453. Return: ES:BX -> current event post handler (see AX=B804h)
  7454. Note:    this function is supported by PC LAN Program, 10NET v5.0
  7455. SeeAlso: AC=B800h,AX=B804h,AX=B903h
  7456. --------N-2FB804-----------------------------
  7457. INT 2F - NETWORK - SET NETWORK EVENT POST HANDLER
  7458.     AX = B804h
  7459.     CX = (10NET) 0370h if 10Windows is hooking post handler
  7460.     ES:BX -> new event post handler (see #2188)
  7461. Notes:    used in conjunction with AX=B803h to hook into the network event post
  7462.       routine
  7463.     this function is supported by PC LAN Program, 10NET v5.0
  7464.     The specified handler is called on any network event.  Two events are
  7465.       defined: message received and critical network error.
  7466. SeeAlso: AX=B800h,AX=B803h,AX=B904h
  7467.  
  7468. (Table 2188)
  7469. Values network post routine is called with:
  7470.     AX = 0000h single block message
  7471.         DS:SI -> ASCIZ originator name
  7472.         DS:DI -> ASCIZ destination name
  7473.         ES:BX -> text header (see #2189)
  7474.     AX = 0001h start multiple message block
  7475.         CX = block group ID
  7476.         DS:SI -> ASCIZ originator name
  7477.         DS:DI -> ASCIZ destination name
  7478.     AX = 0002h multiple block text
  7479.         CX = block group ID
  7480.         ES:BX -> text header (see #2189)
  7481.     AX = 0003h end multiple block message
  7482.         CX = block group ID
  7483.     AX = 0004h message aborted due to error
  7484.         CX = block group ID
  7485.     AX = 0101h server received badly formatted network request
  7486.         Return: AX = FFFFh (PC LAN will process error)
  7487.     AX = 0102h unexpected network error
  7488.         ES:BX -> NCB (see #2425 at INT 5C)
  7489.     AX = 0103h server received INT 24 error
  7490.         other registers as for INT 24, except AH is in BH
  7491.         Return: as below, but only 0000h and FFFFh allowed
  7492. Return: AX = response code
  7493.         0000h user post routine processed message
  7494.         0001h PC LAN will process message, but message window not displayed
  7495.         FFFFh PC LAN will process message
  7496.  
  7497. Format of text header:
  7498. Offset    Size    Description    (Table 2189)
  7499.  00h    WORD    length of text (maximum 512 bytes)
  7500.  02h  N BYTEs    text of message
  7501. Note:    all CRLF sequences in message text are replaced by 14h; all other
  7502.       values below 20h (space) are reserved
  7503. --------N-2FB807-----------------------------
  7504. INT 2F - NETWORK - GET NetBIOS NAME NUMBER OF MACHINE NAME
  7505.     AX = B807h
  7506. Return: CH = NetBIOS name number of the machine name
  7507. SeeAlso: INT 21/AX=5E00h
  7508. --------N-2FB808-----------------------------
  7509. INT 2F U - NETWORK - RELINK KEYBOARD HANDLER
  7510.     AX = B808h
  7511.     ES:BX -> INT 09 handler network should call after it finishes INT 09
  7512. Notes:    this call replaces the address to which the network software chains on
  7513.       an INT 09 without preserving the original value.  This allows a prior
  7514.       handler to unlink, but does not allow a new handler to be added
  7515.       such that the network gets the INT 09 first unless the new handler
  7516.       completely takes over INT 09 and never chains.
  7517.     this function is called by the DOS 3.2 KEYBxx.COM
  7518. SeeAlso: AX=B908h
  7519. --------N-2FB809-----------------------------
  7520. INT 2F - NETWORK - LANtastic, NetWare Lite - GET VERSION
  7521.     AX = B809h
  7522. Return: AH = major version
  7523.     AL = minor version (decimal)
  7524. Notes:    this function is supported in this form by LANtastic, NetWare Lite,
  7525.       SilverNET, ...
  7526.     NetWare Lite returns its own version number rather than a PC LAN
  7527.       compatibility version
  7528. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"PC LAN Program"
  7529. --------N-2FB809-----------------------------
  7530. INT 2F - NETWORK - PC LAN Program - GET VERSION
  7531.     AX = B809h
  7532. Return: AH = minor version (decimal)
  7533.     AL = major version
  7534. Notes:    this function is supported in this form by PC LAN Program, LAN Manager,
  7535.       the DOS LAN Requester, and 10NET v5.0
  7536.     10NET returns version 1.10 (AX=0A01h) for compatibility
  7537. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LANtastic"
  7538. --------N-2FB80A-----------------------------
  7539. INT 2F u - PC Network 1.00 - ???
  7540.     AX = B80Ah
  7541.     ???
  7542. Return: ???
  7543. Program: PC Network is an early networking package which was renamed the
  7544.       IBM PC Local Area Network Program (PC LAN Program) as of v1.10
  7545. Note:    called by RECEIVER (equivalent to NetWare Lite SERVER)
  7546. --------N-2FB80F-----------------------------
  7547. INT 2F - DOS LAN Requester - GET START PARAMETERS
  7548.     AX = B80Fh
  7549.     CX = size of return data buffer
  7550.     ES:DI -> return data buffer (see #2190)
  7551. Return: AX = status
  7552.          00h     network started
  7553.          nonzero network not started
  7554.     CX = number of bytes returned in buffer
  7555.     ES:DI buffer filled
  7556. SeeAlso: AX=B809h"PC LAN Program"
  7557.  
  7558. Format of DOS LAN Requester return data buffer:
  7559. Offset    Size    Description    (Table 2190)
  7560.  00h    BYTE    major version
  7561.  01h    BYTE    minor version
  7562.  02h    WORD    configuration flags given when network was started (see #2191)
  7563.  04h 15 BYTEs    NET START machine name (space padded)
  7564.  13h    BYTE    00h
  7565.  14h 9    BYTEs    NET START domain name (NULL padded)
  7566.  1Dh    BYTE    00h
  7567.  1Eh 32 BYTEs    /WRK heuristics string (space padded, not terminated)
  7568.  3Eh    WORD    /SRV value
  7569.  40h    WORD    /ASG value
  7570.  42h    WORD    /NBC value
  7571.  44h    WORD    /NBS value
  7572.  46h    WORD    /BBC value
  7573.  48h    WORD    /BBS value
  7574.  4Ah    WORD    /PBC value
  7575.  4Ch    WORD    /PBS value
  7576.  4Eh    WORD    /PFS value
  7577.  50h    WORD    /PFT value
  7578.  52h    WORD    /PWT value
  7579.  54h    WORD    /KUC value
  7580.  56h    WORD    /KST value
  7581.  58h    WORD    /NVS value
  7582.  5Ah    WORD    /NMS value
  7583.  5Ch    WORD    /NDB value
  7584.  5Eh    WORD    /MBI value
  7585.  60h    BYTE    NetBIOS name number for machine name
  7586.  61h    BYTE    NetBIOS name number for domain name
  7587.  62h    WORD    NetBIOS sessions required for configuration
  7588.  64h    WORD    NetBIOS commands required for configuration
  7589.  66h    WORD    NetBIOS names required for configuration
  7590.  68h 128 BYTEs    NET START path (LANROOT)
  7591.  E8h    BYTE    00h
  7592.  
  7593. Bitfields for configuration flags:
  7594. Bit(s)    Description    (Table 2191)
  7595.  0    /NVS nonzero
  7596.  1    /NMS nonzero
  7597.  2    /API
  7598.  3    /HIM
  7599.  4    /LIM
  7600.  5    /ENC
  7601.  6    /POP
  7602.  7    /EMS
  7603.  8    /RPL
  7604.  9-12    reserved
  7605.  13    RDR started
  7606.  14    RCV started
  7607.  15    User is currently logged on
  7608. --------N-2FB900-----------------------------
  7609. INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
  7610.     AX = B900h
  7611. Return: AL = state
  7612.         00h if not installed
  7613.         FFh if installed
  7614. --------N-2FB901-----------------------------
  7615. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
  7616.     AX = B901h
  7617. Return: AL = ???
  7618.     ES:BX -> RECEIVER.COM INT 2F handler
  7619. Desc:    allows more efficient execution by letting the caller bypass any other
  7620.       INT 2F handlers which have been added since RECEIVER.COM was
  7621.       installed
  7622. --------N-2FB903-----------------------------
  7623. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
  7624.     AX = B903h
  7625. Return: ES:BX -> POST handler
  7626. SeeAlso: AX=B803h,AX=B904h
  7627. --------N-2FB904-----------------------------
  7628. INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
  7629.     AX = B904h
  7630.     ES:BX -> new POST handler
  7631. SeeAlso: AX=B804h,AX=B903h
  7632. --------N-2FB905-----------------------------
  7633. INT 2F - PC Network RECEIVER.COM - GET FILENAME
  7634.     AX = B905h
  7635.     DS:BX -> 128-byte buffer for filename 1
  7636.     DS:DX -> 128-byte buffer for filename 2
  7637. Return: buffers filled from RECEIVER.COM internal buffers
  7638. Note:    use of filenames is unknown, but one appears to be for storing messages
  7639. SeeAlso: AX=B906h
  7640. --------N-2FB906-----------------------------
  7641. INT 2F - PC Network RECEIVER.COM - SET FILENAME
  7642.     AX = B906h
  7643.     DS:BX -> 128-byte buffer for filename 1
  7644.     DS:DX -> 128-byte buffer for filename 2
  7645. Return: RECEIVER.COM internal buffers filled from user buffers
  7646. Note:    use of filenames is unknown, but one appears to be for storing messages
  7647. SeeAlso: AX=B905h
  7648. --------N-2FB908-----------------------------
  7649. INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
  7650.     AX = B908h
  7651.     ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
  7652. Note:    this call replaces the address to which RECEIVER.COM chains on an
  7653.       INT 09 without preserving the original value.     This allows a prior
  7654.       handler to unlink, but does not allow a new handler to be added
  7655.       such that RECEIVER gets the INT 09 first.
  7656. SeeAlso: AX=B808h
  7657. --------V-2FBC00-----------------------------
  7658. INT 2F - Windows 3.0, DOS 5+ EGA.SYS - INSTALLATION CHECK
  7659.     AX = BC00h
  7660. Return: AL = state
  7661.         00h not installed, OK to install
  7662.         01h not installed, not OK to install
  7663.         FFh installed
  7664.         BX = 5456h ("TV")
  7665. Range:    AH=80h to AH=FFh, selected by commandline switch
  7666. SeeAlso: AX=BC06h"EGA",INT 10/AH=FAh"EGA"
  7667. --------s-2FBC00BX3F3F-----------------------
  7668. INT 2F - MediaVision MVSOUND.SYS - INSTALLATION CHECK
  7669.     AX = BC00h
  7670.     BX = 3F3Fh ('??')
  7671.     CX = 0000h
  7672.     DX = 0000h
  7673. Return: if installed, BX XOR CX XOR DX = 4D56h ('MV')
  7674. Program: MVSOUND.SYS is a driver for the MediaVision ProAudio Spectrum family
  7675.       of sound boards; its primary programmer was Bryan Crane
  7676. SeeAlso: AX=BC01h"MVSOUND",AX=BC02h,AX=BC03h,AX=BC04h,AX=BC06h"MVSOUND"
  7677. --------s-2FBC01-----------------------------
  7678. INT 2F - MediaVision MVSOUND.SYS - GET VERSION
  7679.     AX = BC01h
  7680.     BX = magic value 6D20h ('m ')
  7681.     CX = magic value 2076h (' v')
  7682.     DX = magic value 2020h ('  ')
  7683. Return: BX = ASCII major version (leading zeros significant)
  7684.     CX = ASCII minor version (leading zeros significant)
  7685. SeeAlso: AX=BC00h/BX=3F3Fh
  7686. --------s-2FBC02-----------------------------
  7687. INT 2F - MediaVision MVSOUND.SYS - GET STATE TABLE POINTER
  7688.     AX = BC02h
  7689. Return: BX:DX -> state table
  7690. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC03h
  7691. --------s-2FBC03-----------------------------
  7692. INT 2F - MediaVision MVSOUND.SYS - GET FUNCTION TABLE POINTER
  7693.     AX = BC03h
  7694. Return: BX:DX -> function table
  7695. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC02h
  7696. --------s-2FBC04-----------------------------
  7697. INT 2F - MediaVision MVSOUND.SYS - GET DMA AND IRQ CHANNELS
  7698.     AX = BC04h
  7699. Return: AX = 4D56h ('MV')
  7700.     BL = DMA channel
  7701.     CL = IRQ number
  7702. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND"
  7703. --------V-2FBC06-----------------------------
  7704. INT 2F U - MS Windows 3.0, DOS 5+ EGA.SYS - GET VERSION INFO
  7705.     AX = BC06h
  7706. Return: BX = 5456h ("TV")
  7707.     CH = major version
  7708.     CL = minor version
  7709.     DL = revision
  7710. SeeAlso: AX=BC00h"EGA",INT 10/AH=FAh"EGA"
  7711. --------s-2FBC06-----------------------------
  7712. INT 2F - MediaVision MVSOUND.SYS - GET STATUS STRING
  7713.     AX = BC06h
  7714. Return: AX = 4D56h ('MV')
  7715.     DX:BX -> status string (first byte 0Ch if no status message to display)
  7716. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND",AX=BC0Bh"MVSOUND"
  7717. --------s-2FBC0B-----------------------------
  7718. INT 2F - MediaVision MVSOUND.SYS - GET EXECUTABLE PATH
  7719.     AX = BC0Bh
  7720. Return: BX:DX -> ASCIZ path for MVPROAS.EXE, 0000h:0000h if not available
  7721. SeeAlso: AX=BC00h/BX=3F3Fh
  7722. --------U-2FBE00-----------------------------
  7723. INT 2F - REDVIEW - INSTALLATION CHECK
  7724.     AX = BE00h
  7725. Return: AL = FFh if installed
  7726. Program: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
  7727.       copies data sent to standard output to standard error when the
  7728.       former has been redirected to a file, thus allowing the data to
  7729.       be seen on the screen at the same time it is captured in a file
  7730. --------N-2FBF00-----------------------------
  7731. INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
  7732.     AX = BF00h
  7733. Return: AL = FFh if installed
  7734. --------N-2FBF01-----------------------------
  7735. INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
  7736.     AX = BF01h
  7737.     ???
  7738. Return: ???
  7739. --------N-2FBF80-----------------------------
  7740. INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
  7741.     AX = BF80h
  7742.     ES:DI -> FAR entry point to IFS handler in REDIRIFS
  7743. Return: AL = FFh if installed
  7744.         ES:DI -> internal workspace
  7745. Note:    all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
  7746. --------F-2FC0-------------------------------
  7747. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - API
  7748.     AH = C0h
  7749.     AL = function code (01h to 15h)
  7750. Return: ???
  7751. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h/BX=4D53h
  7752. --------N-2FC000-----------------------------
  7753. INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
  7754.     AX = C000h
  7755. Return: AL = FFh if installed
  7756.         DX:BX -> FAR entry point (see #2192,#2193,#2194)
  7757.         ES:SI -> signature string "LINKSUP$"
  7758. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  7759. Note:    on return, ES = DX for LSL v1.10 and v2.05; LSL makes use of this in
  7760.       its search for a previous installation
  7761. SeeAlso: AX=5100h,AX=C000h"NESL"
  7762.  
  7763. (Table 2192)
  7764. Call LSL function "Request MLID Registration" with:
  7765.     BX = 0001h
  7766.     ES:SI -> registration??? record (see #2196)
  7767.     DS:DI -> buffer for LSL information block (see #2197)
  7768. Return: AX = completion code (0000h,8001h) (see #2195)
  7769.     DS:DI buffer filled if successful
  7770.     BX,CX corrupted
  7771. Note:    see "Novell LAN Driver Developer's Guide, Volume III" for more details
  7772.  
  7773. (Table 2193)
  7774. Call LSL function "get support entry points" with:
  7775.     BX = 0002h
  7776.     ES:SI -> buffer for entry point record (see #2198)
  7777. Return: ES:SI buffer filled
  7778.  
  7779. (Table 2194)
  7780. Call LSL function "Request MLID API entry point" with:
  7781.     BX = 0003h
  7782. Return: ES:SI -> MLID (Multiple Link Interface Driver) API entry point
  7783.         (call with BX=function 00h-10h, not range-checked)
  7784. Note:    LSL v1.10 and v2.05 execute BX=0003h for BX=0000h and any BX >= 0003h
  7785.  
  7786. (Table 2195)
  7787. Values for LSL completion code:
  7788.  0000h    successful
  7789.  8001h    out of resources
  7790.  8002h    bad parameter
  7791.  8003h    no more items
  7792.  8004h    item not present
  7793.  8005h    failed
  7794.  8006h    receive overflow
  7795.  8007h    canceled
  7796.  8008h    bad command
  7797.  8009h    duplicate entry
  7798.  800Ah    no such handler
  7799.  800Bh    no such driver
  7800.  
  7801. Format of LSL registration record:
  7802. Offset    Size    Description    (Table 2196)
  7803.  00h    DWORD    -> ??? FAR function (to be called with ES:SI -> ??? and
  7804.           returning AX = completion code)
  7805.  04h    DWORD    -> ???
  7806.  08h    DWORD    -> ??? data (at least 3Eh bytes)
  7807.  
  7808. Format of LSL information block:
  7809. Offset    Size    Description    (Table 2197)
  7810.  00h    DWORD    -> ??? entry point (called with BX=function 00h-11h)
  7811.  04h    WORD    ???
  7812.  06h    WORD    ???
  7813. Note:    due to a fencepost error, LSL v2.05 (distributed with Novell DOS 7)
  7814.       will crash if the above entry point is called with BX=0012h
  7815.  
  7816. Format of entry point record:
  7817. Offset    Size    Description    (Table 2198)
  7818.  00h    DWORD    pointer to protocol support entry point in LSL (see #2199)
  7819.  04h    DWORD    pointer to general support entry point in LSL (see #2200)
  7820.  
  7821. (Table 2199)
  7822. Call protocol support entry point with:
  7823.     BX = function number
  7824.         0000h ???
  7825.         0001h ???
  7826.         0002h ???
  7827.         0003h "ScheduleAESEvent"
  7828.         ES:SI -> AES ECB to be scheduled (see #2203)
  7829.         Return: ES,SI preserved
  7830.         0004h "CancelAESEvent"
  7831.         ES:SI -> ECB to be cancelled (see #2203)
  7832.         Return: ES,SI preserved
  7833.         0005h "GetIntervalMarker"
  7834.         Return: DX:AX = current interval marker in milliseconds
  7835.             all other registers preserved
  7836.         0006h "RegisterStack"
  7837.         AX = logical board number
  7838.         ES:SI -> bound stack info structure (see #2213)
  7839.         Return: BX = assigned Stack ID if AX=0000h
  7840.         0007h "DeRegisterStack"
  7841.         AX = protocol stack's assigned Stack ID
  7842.         0008h "RegisterDefaultStack"
  7843.         AX = logical board number
  7844.         ES:SI -> stack info structure (see #2214)
  7845.         0009h "DeRegisterDefaultStack"
  7846.         AX = logical board number
  7847.         000Ah "RegisterPrescanStack"
  7848.         AX = logical board number
  7849.         ES:SI -> stack info structure (see #2214)
  7850.         000Bh "DeRegisterPrescanStack"
  7851.         AX = logical board number
  7852.         000Ch "SendPacket"
  7853.         ES:SI -> send ECB
  7854.         Return: interrupts disabled
  7855.         000Dh ???
  7856.         000Eh ???
  7857.         000Fh ???
  7858.         0010h "GetStackIDFromName"
  7859.         ES:SI -> counted NUL-terminated protocol name (max 15 chars)
  7860.         Return: BX = Stack ID if AX=0000h
  7861.         0011h "GetPIDFromStackIDBoard"
  7862.         AX = Stack ID for protocol
  7863.         CX = logical board number
  7864.         ES:SI -> 6-byte buffer for protocol ID
  7865.         0012h "GetMLIDControlEntry"
  7866.         AX = logical board number
  7867.         Return: ES:SI -> MLID control handler (see #2201) if AX=0000h
  7868.         0013h "GetProtocolControlEntry"
  7869.         AX = Stack ID or
  7870.             FFFEh Prescan stack
  7871.                 CX = logical board number
  7872.             FFFFh default protocol
  7873.                 CX = logical board number
  7874.         Return: ES:SI -> protocol stack control entry point if AX=0000h
  7875.                   (see #2202)
  7876.         0014h "GetLSLStatistics"
  7877.         Return: AX = 0000h (successful)
  7878.             ZF set
  7879.             ES:SI -> LSL statistics table (see #2205)
  7880.         0015h "BindStack"
  7881.         AX = protocol stack's assigned Stack ID
  7882.         CX = logical board number
  7883.         0016h "UnbindStack"
  7884.         AX = protocol stack's assigned Stack ID
  7885.         CX = logical board number
  7886.         0017h "AddProtocolID"
  7887.         AX = frame type ID code
  7888.         ES:SI -> 6-byte protocol ID
  7889.         CX:DI -> counted NUL-terminated short protocol name (max 15 ch)
  7890.         0018h "RelinquishControl"
  7891.         Return: after LSL performs any necessary background processing
  7892.         0019h "GetLSLConfiguration"
  7893.         Return: AX = 0000h (successful)
  7894.             ZF set
  7895.             ES:SI -> LSL configuration table (see #2204)
  7896.         001Ah "GetTickMarker"
  7897.         Return: AX = number of 55ms ticks since LSL loaded
  7898.             BX destroyed
  7899. Return: AX = completion code (see #2195)
  7900.     ZF set if successful
  7901.     SS:SP, DS, BP preserved; most other registers may be destroyed
  7902.  
  7903. (Table 2200)
  7904. Call general support entry point with:
  7905.     BX = function number
  7906.         0000h "Allocate Memory" (obsolete)
  7907.          always returns AX=8008h (BAD_COMMAND)
  7908.         0001h "Free Memory" (obsolete)
  7909.          always returns AX=8008h (BAD_COMMAND)
  7910.         0002h "Realloc Memory" (obsolete)
  7911.          always returns AX=8008h (BAD_COMMAND)
  7912.         0003h "Memory Statistics" (obsolete)
  7913.          always returns AX=8008h (BAD_COMMAND)
  7914.         0004h "Add Memory To Pool" (obsolete)
  7915.          always returns AX=8008h (BAD_COMMAND)
  7916.         0005h "AddGeneralService"
  7917.         ES:SI -> General Service Control Block (see #2215)
  7918.         0006h "RemoveGeneralService"
  7919.         ES:SI -> General Service Control Block (see #2215)
  7920.         0007h "GetNETcfgPath"
  7921.         Return: AX = 0000h (successful)
  7922.             DS:DX -> ASCIZ pathname for NET.CFG
  7923.         0008h U ???     (in LSL 1.10)
  7924.         Return: AX = 0000h
  7925.             ES:SI -> ??? (a 22-byte data area)
  7926.         000Ah "GetCriticalSectionStatus"
  7927.         Return: BX = total outstanding calls to "StartCriticalSection"
  7928.         000Bh "ServiceEvents"
  7929.         interrupts disabled
  7930.         Return: interrupts disabled
  7931.         0010h "GetStackECB"
  7932.         DS:DI -> Lookahead structure (see #2216)
  7933.         interrupts disabled
  7934.         Return: ES:SI -> ECB if successful (AX=0000h,ZF set)
  7935.             interrupts disabled
  7936.         8000h-FFFFh reserved for user general service providers
  7937. Return: AX = completion code (see #2195)
  7938.     ZF set if successful
  7939.     SS:SP, DS, BP preserved
  7940.  
  7941. (Table 2201)
  7942. Call MLID control handler with:
  7943.     AX = logical board number
  7944.     BX = function number
  7945.         0000h "GetMLIDConfiguration"
  7946.         Return: ES:SI -> MLID's configuration table if successful
  7947.                   (see #2208 for format)
  7948.         0001h "GetMLIDStatistics"
  7949.         Return: ES:SI -> MLID's statistics table if successful
  7950.                   (see #2208 for format)
  7951.         0002h "AddMulticastAddress"
  7952.         ES:SI -> 6-byte multicast address to add
  7953.         0003h "DeleteMulticastAddress"
  7954.         ES:SI -> 6-byte multicast address to delete
  7955.         0005h "MLIDShutdown"
  7956.         CX = type
  7957.             0000h permanent (also deregisters from LSL)
  7958.             other temporary (shutdown hardware only)
  7959.         0006h "MLIDReset" reinitialize board / restart from temp shutdown
  7960.         0007h "Create Connection" (obsolete?)
  7961.         ???
  7962.         0008h "Delete Connection" (obsolete?)
  7963.         ???
  7964.         0009h "SetLookAheadSize"
  7965.         CX = requested lookahead size (00h-80h)
  7966.         000Ah "PromiscuousChange"
  7967.         CX = what to receive promiscuously
  7968.             bit 0: MAC frames
  7969.             bit 1: non-MAC frames
  7970.         000Bh "RegisterReceiveMonitor"
  7971.         CX = subfunction
  7972.             0000h disable receive monitoring
  7973.             else  enable receive monitoring
  7974.         ES:SI -> monitor receive routine
  7975.         ES:DI -> monitor transmit routine
  7976.         000Ch "Driver Poll" (obsolete?)
  7977.         ???
  7978. Return: AX = completion code (see #2195)
  7979.     ZF set if successful
  7980. Note:    not all boards/MLIDs support function 0010h; see bit 13 in the MLID
  7981.       mode flags field of the MLID's configuration table
  7982.  
  7983. (Table 2202)
  7984. Call protocol stack control entry point with:
  7985.     BX = function number
  7986.         0000h "GetProtocolStackConfiguration"
  7987.         Return: ES:SI -> protocol stack's configuration table
  7988.                    (see #2207)
  7989.         0001h "GetProtocolStackStatistics"
  7990.         Return: ES:SI -> protocol stack's statistics table (see #2206)
  7991.         0002h "BindToMLID"
  7992.         CX = board number to bind to
  7993.         ES:SI -> implementation-dependant parameter string
  7994.         0003h "UnBindFromMLID"
  7995.         CX = board number from which protocol should unbind
  7996.         ES:SI -> optional implementation-dependant parameter string
  7997.         0004h "MLIDDeRegistered"
  7998.         CX = board number that has de-registered from LSL
  7999. Return: AX = status
  8000.         0000h successful
  8001.         else implementation-dependant error codes
  8002.     ZF set if successful
  8003.     SS:SP, DS, BP preserved
  8004.  
  8005. Format of AES ECB:
  8006. Offset    Size    Description    (Table 2203)
  8007.  00h    DWORD    "AESLink" pointer used by LSL for list management
  8008.  04h    DWORD    number of milliseconds to wait
  8009.  08h    DWORD    "AESStatus" (is set to 00000000h when AES ESR is invoked)
  8010.  0Ch    DWORD    -> function to be invoked when time expires
  8011.         ES:SI will point to this structure on entry,
  8012.         DS, BP, and SS:SP must be preserved.
  8013. SeeAlso: #2217
  8014.  
  8015. Format of LSL Configuration Table:
  8016. Offset    Size    Description    (Table 2204)
  8017.  00h    BYTE    major version of configuration table
  8018.  01h    BYTE    minor version of configuration table (decimal, 0-99)
  8019.  02h  8 BYTEs    reserved
  8020.  0Ah    BYTE    LSL major version (decimal)
  8021.  0Bh    BYTE    LSL minor version (decimal, 0-99)
  8022. ---LSL 1.0x ---
  8023.  0Ch 14 BYTEs    reserved
  8024. ---LSL 1.10+ ---
  8025.  0Ch    WORD    maximum number of boards which LSL can handle
  8026.  0Eh    WORD    maximum number of protocol IDs which LSL can handle
  8027.  10h 12 BYTEs    reserved
  8028.  
  8029. Format of LSL Statistics Table:
  8030. Offset    Size    Description    (Table 2205)
  8031.  00h    BYTE    major version of statistics table format
  8032.  01h    BYTE    minor version of statistics table format (decimal, 0-99)
  8033.  02h    WORD    "GenericCounters" number of counters in static portion of
  8034.           table
  8035.  04h    DWORD    "ValidCountersMask" bit mask indicating which generic
  8036.           counters are actually used.  Bit 31 = TotalTxPackets, bit 30
  8037.           is the next field, etc.
  8038.  08h    DWORD    "TotalTxPackets" total SendPacket requests made
  8039.  0Ch    DWORD    reserved
  8040.  10h    DWORD    reserved
  8041.  14h    DWORD    "AESEventsCount" number of completed AES events
  8042.  18h    DWORD    "PostponedEvents" number of events postponed due to critical
  8043.           sections inside the MLIDs
  8044.  1Ch    DWORD    "CancelAESFailures" number of times CancelAESEvent failed
  8045.  20h    DWORD    reserved
  8046.  24h    DWORD    reserved
  8047.  28h    DWORD    "TotalRxPackets" total number of GetStackECB requests
  8048.  2Ch    DWORD    "UnclaimedPackets" total number of packets not consumed by a
  8049.           protocol stack
  8050.  30h    WORD    "NumberCustom" number of custom variables that follow
  8051.  32h  N DWORDs    custom counters
  8052.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  8053.     var    length-prepended and NULL terminated string for Counter 0
  8054.     ...
  8055.     var    length-prepended and NULL terminated string for Counter N-1
  8056. SeeAlso: #2206,#2212
  8057.  
  8058. Format of Protocol Stack Statistics Table:
  8059. Offset    Size    Description    (Table 2206)
  8060.  00h    BYTE    statistics table major version
  8061.  01h    BYTE    statistics table minor version (decimal, 0-99)
  8062.  02h    WORD    number of generic counters following
  8063.  04h    DWORD    "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
  8064.  08h    DWORD    TotalTxPackets
  8065.  0Ch    DWORD    TotalRxPackets
  8066.  10h    DWORD    IgnoredRxPackets
  8067.  14h    WORD    number of custom counters
  8068.  16h  N DWORDs    custom counters
  8069.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  8070.     var    length-prepended and NULL terminated string for Counter 0
  8071.     ...
  8072.     var    length-prepended and NULL terminated string for Counter N-1
  8073. SeeAlso: #2205,#2212
  8074.  
  8075. Format of Protocol Stack Configuration Table:
  8076. Offset    Size    Description    (Table 2207)
  8077.  00h    BYTE    configuration table major version
  8078.  01h    BYTE    configuration table minor version (decimal, 0-99)
  8079.  02h    DWORD    -> counted NUL-terminated long descriptive name for protocol
  8080.  06h    DWORD    -> counted NUL-terminated short name for protocol (15 chars)
  8081.  0Ah    BYTE    protocol stack major version
  8082.  0Bh    BYTE    protocol stack minor version (decimal, 0-99)
  8083.  0Ch 16 BYTEs    reserved for future use
  8084.  
  8085. Format of MLID Configuration Table:
  8086. Offset    Size    Description    (Table 2208)
  8087.  00h 26 BYTEs    signature 'HardwareDriverMLID         ' (8 spaces on end)
  8088.  1Ah    BYTE    configuration table major version
  8089.  1Bh    BYTE    configuration table minor version (decimal, 0-99)
  8090.  1Ch  6 BYTEs    node address
  8091.  22h    WORD    MLID mode flags (see #2209)
  8092.  24h    WORD    board number
  8093.  26h    WORD    board instance (if more than one of same board installed)
  8094.  28h    WORD    maximum packet size
  8095.  2Ah    WORD    BestDataSize
  8096.  2Ch    WORD    WorstDataSize
  8097.  2Eh    DWORD    -> counted NUL-terminated long name for NIC
  8098.  32h    DWORD    -> counted NUL-terminated short name for NIC (8 chars max)
  8099.  36h    DWORD    -> counted NUL-terminated Frame and Media type
  8100.  3Ah    WORD    reserved (0000h)
  8101.  3Ch    WORD    frame type ID
  8102.  3Eh    WORD    TransportTime (milliseconds)
  8103.  40h    DWORD    -> SourceRouteHandler for TokenRing. (Used by ROUTE.COM)
  8104.  44h    WORD    lookahead size
  8105.  46h    WORD    line speed (Mbps if high bit clear, else Kbps)
  8106.  48h    WORD    QueueDepth
  8107.  4Ah  6 BYTEs    reserved (0)
  8108.  50h    BYTE    driver major version
  8109.  51h    BYTE    driver minor version (decimal, 0-99)
  8110.  52h    WORD    bus/multicast flags (see #2210)
  8111.  54h    WORD    send retries
  8112.  56h    DWORD    ConfigTableLink
  8113.  5Ah    WORD    MLID sharing flags (see #2211)
  8114.  5Ch    WORD    slot number
  8115.  5Eh    WORD    I/O address 1
  8116.  60h    WORD    I/O range 1
  8117.  62h    WORD    I/O address 2
  8118.  64h    WORD    I/O range 2
  8119.  66h    DWORD    memory address 1
  8120.  6Ah    WORD    memory size 1
  8121.  6Ch    DWORD    memory address 2
  8122.  70h    WORD    memory size 2
  8123.  72h    BYTE    interrupt line 1
  8124.  73h    BYTE    interrupt line 2
  8125.  74h    BYTE    DMA line 1
  8126.  75h    BYTE    DMA line 2
  8127.  
  8128. Bitfields for MLID mode flags:
  8129. Bit(s)    Description    (Table 2209)
  8130.  15    MLID supports Octet Reversal
  8131.  14    node address is non-canonical
  8132.  13    promiscuous mode is supported
  8133.  12-8    reserved
  8134.  7    LDataSize field in LookAhead structure supported
  8135.  6    raw send supported
  8136.  5    MLID needs to be polled by LSL
  8137.  4    reserved (0)
  8138.  3    multicasting is supported
  8139.  2    not currently used by DOS ODI, set to 0.
  8140.  1    network card uses DMA.
  8141.  0    RealDriverBit, always set to 1.
  8142.  
  8143. Bitfields for bus/multicast flags:
  8144. Bit(s)    Description    (Table 2210)
  8145.  10-9    specialized multicast support
  8146.     00 = Group addressing is default for medium
  8147.     01 = Invalid
  8148.     10 = Filter group address in MLID.
  8149.     11 = Adapter filters group address.
  8150.  2    supports Micro Channel cards
  8151.  1    supports ISA cards
  8152.  0    supports EISA cards
  8153.  
  8154. Bitfields for MLID sharing flags:
  8155. Bit(s)    Description    (Table 2211)
  8156.  8    NIC can share DMA2
  8157.  7    NIC can share DMA1
  8158.  6    NIC can share IRQ2
  8159.  5    NIC can share IRQ1
  8160.  4    NIC can share Memory2
  8161.  3    NIC can share Memory1
  8162.  2    NIC can share IO2
  8163.  1    NIC can share IO1
  8164.  0    MLID is currently shut down
  8165.  
  8166. Format of MLID Statistics Table:
  8167. Offset    Size    Description    (Table 2212)
  8168.  00h    BYTE    driver statistics table major version
  8169.  01h    BYTE    driver statistics table minor version (decimal, 0-99)
  8170.  02h    WORD    number of generic counters (typically 13)
  8171.  04h    DWORD    "ValidCountersMask" (bit mask, bit 31 is TotalTxCount)
  8172.  08h    DWORD    TotalTxCount
  8173.  0Ch    DWORD    TotalRxCount
  8174.  10h    DWORD    NoECBAvailableCount
  8175.  14h    DWORD    TxTooBigCount
  8176.  18h    DWORD    TxTooSmallCount
  8177.  1Ch    DWORD    RxOverflowCount
  8178.  20h    DWORD    RxTooBigCount
  8179.  24h    DWORD    RxTooSmallCount
  8180.  28h    DWORD    TxMiscCount
  8181.  2Ch    DWORD    RxMiscCount
  8182.  30h    DWORD    TxRetryCount
  8183.  34h    DWORD    RxChecksumErrorCount
  8184.  38h    DWORD    RxMismatchCount
  8185.  3Ch    WORD    number of custom counters
  8186.  3Eh  N DWORDs    custom counters
  8187.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  8188.     var    length-prepended and NULL terminated string for Counter 0
  8189.     ...
  8190.     var    length-prepended and NULL terminated string for Counter N-1
  8191. SeeAlso: #2205,#2206
  8192.  
  8193. Format of bound stack info structure:
  8194. Offset    Size    Description    (Table 2213)
  8195.  00h    DWORD    -> protocol stack's short name (counted, NUL-terminated)
  8196.  04h    DWORD    -> receive handler
  8197.  08h    DWORD    -> control handler
  8198.  
  8199. Format of stack info structure:
  8200. Offset    Size    Description    (Table 2214)
  8201.  00h    DWORD    -> receive handler
  8202.  04h    DWORD    -> control handler
  8203.  
  8204. Format of General Service Control Block:
  8205. Offset    Size    Description    (Table 2215)
  8206.  00h    DWORD    -> next GSCB (maintained internally by LSL)
  8207.  04h    DWORD    -> entry point for general service handler
  8208.  08h    WORD    command code for this general service (8000h-FFFFh)
  8209. Note:    the control block must not be altered or deallocated until the general
  8210.       service is removed
  8211.  
  8212. Format of Lookahead structure:
  8213. Offset    Size    Description    (Table 2216)
  8214.  00h    DWORD    -> Media header
  8215.  04h    DWORD    -> lookahead buffer
  8216.  08h    WORD    length of lookahead buffer
  8217.  0Ah  6 BYTEs    protocol ID
  8218.  10h    WORD    logical board number
  8219.  12h    WORD    lookahead size
  8220.  
  8221. Format of ODI ECB:
  8222. Offset    Size    Description    (Table 2217)
  8223.  00h    DWORD    link to next ECB
  8224.  04h    DWORD    link to previous ECB
  8225.  08h    WORD    general status
  8226.         0000h received successfully
  8227.         8006h packet overflow
  8228.         8007h reception aborted (data not valid)
  8229.  0Ah    DWORD    -> event service routine or RETF (never 0000h:0000h)(see #2218)
  8230.  0Eh    WORD    protocol stack identifier
  8231.  10h  6 BYTEs    protocol ID (sending only)
  8232.  16h    WORD    MLID board number (sending only)
  8233.  18h  6 BYTEs    MAC destination address
  8234.  1Eh  4 BYTEs    driver workspace
  8235.  22h  4 BYTEs    protocol workspace
  8236.  26h    WORD    total length of sent buffer
  8237.  28h    WORD    fragment count
  8238.  2Ah  2 WORDs    segment,offset of first fragment buffer
  8239.  2Eh    WORD    length of first fragment buffer
  8240.     ...
  8241. SeeAlso: #2203
  8242.  
  8243. (Table 2218)
  8244. Values event service routine is called with:
  8245.     ES:SI -> associated ODI ECB (see #2217)
  8246.     interrupts disabled
  8247. Return: DS,BP,SS,SP preserved
  8248.     interrupt disabled
  8249. Notes:    the service routine may invoke any IPX/ODI function except CloseSocket
  8250.     it is safe to send a packet and wait for completion if enough stack
  8251.       space is available
  8252. --------N-2FC000-----------------------------
  8253. INT 2F - Novell NetWare Event Service Layer (NESL) 1.0 - INSTALLATION CHECK
  8254.     AX = C000h
  8255. Return: AL = FFh if installed
  8256.         DX:BX -> FAR entry point (see #2219,#2220,#2221,#2222,#2223,#2224)
  8257.         ES:SI -> signature string "NESL_EVENTS"
  8258. Program: NESL is a generic interface for event handling in ODI drivers and
  8259.       other NetWare-oriented modules.  Primarily intended to support
  8260.       power management and "hot swapping" of PCMCIA cards, but it is not
  8261.       limited to this.
  8262. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8263. SeeAlso: AX=C000h"Link Support Layer",AX=C000h"NETWARN"
  8264.  
  8265. (Table 2219)
  8266. Call NESL function GetNESLConfigPointer with:
  8267.     BX = 0000h
  8268. Return: AX = completion code (0000h,8008h) (see #2225)
  8269.     ES:SI -> NESL configuration table if successful (see #2226)
  8270.     BP,DS,STACK preserved
  8271. Desc:    Obtain a pointer to the NESL Configuration Table
  8272. SeeAlso: #2220,#2223
  8273.  
  8274. (Table 2220)
  8275. Call NESL function RegisterEventProducer with:
  8276.     BX = 0001h
  8277.     ES:SI -> Producer Event Control Block (PECB) (see #2227)
  8278. Return: AX = completion code (0000h, 8005h, 8008h) (see #2225)
  8279.     ES:SI -> still points to PECB
  8280.     BP,DS,STACK preserved
  8281. Desc:    Allows a module to register as a producer of a given event class
  8282. Note:    PECB_ClassName and PECB_Flags must be filled in on entry
  8283. SeeAlso: #2093,#2221,#2222,#2223
  8284.  
  8285. (Table 2221)
  8286. Call NESL function DeRegisterEventProducer with:
  8287.     BX = 0002h
  8288.     ES:SI -> PECB previously passed to RegisterEventProducer (see #2227)
  8289. Return: AX = completion code (0000h, 8002h, 8008h) (see #2225)
  8290.     ES:SI -> still points to PECB
  8291.     BP,DS,STACK preserved
  8292. Desc:    Allows a module to de-register as a producer of a given event class
  8293. SeeAlso: #2220,#2224
  8294.  
  8295. (Table 2222)
  8296. Call NESL function EventNotification with:
  8297.     BX = 0003h
  8298.     ES:SI -> PECB previously registered (see #2227)
  8299. Return: AX = completion code (0h, 8005h, 8008h) (see #2225)
  8300.     ES:SI -> still points to PECB
  8301.     BP,DS,STACK preserved
  8302. Desc:    Allows a module to signal that an event has just occurred in a given
  8303.       event class.
  8304. Notes:    Once called, NESL will generate corresponding callouts for this
  8305.       event, as described in Table #2229.
  8306.     on entry, the PECB_DataPtr must point at an Event Parameter Block (EPB)
  8307.       (see #2230) filled in to match the desired event
  8308. SeeAlso: #2220
  8309.  
  8310. (Table 2223)
  8311. Call NESL function RegisterEventConsumer with:
  8312.     BX = 0004h
  8313.     ES:SI -> Consumer Event Control Block (CECB) (see #2228)
  8314. Return: AX = completion code (0h, 8005h, 8008h) (see #2225)
  8315.     ES:SI -> still points to CECB
  8316.     BP,DS,STACK preserved
  8317. Desc:    Allows a module to register as a consumer of a given event class
  8318. Note:    on entry, the CECB_ClassName, CECB_NotifProc and CECB_OSILevel must be
  8319.       filled in.
  8320. SeeAlso: #2220,#2224
  8321.  
  8322. (Table 2224)
  8323. Call NESL function DeRegisterEventConsumer with:
  8324.     BX = 0005h
  8325.     ES:SI -> CECB previously passed to RegisterEventConsumer (see #2228)
  8326. Return: AX = completion code (0h, 8002h, 8008h) (see #2225)
  8327.     ES:SI -> still points to CECB
  8328.     BP,DS,STACK preserved
  8329. Desc:    Allows a module to de-register as a consumer of a given event class
  8330. SeeAlso: #2221,#2223
  8331.  
  8332. (Table 2225)
  8333. Values for NESL Error code:
  8334.  0000h    Successful
  8335.  8002h    Bad Parameter
  8336.  8005h    Fail
  8337.  8008h    Bad Command
  8338.  
  8339. Format of NESL Configuration Table:
  8340. Offset    Size    Description    (Table 2226)
  8341.  00h    WORD    NESL_Cfg_MajVer     Major Version of this table (=1)
  8342.  02h    WORD    NESL_Cfg_MinVer     Minor Version of this table (=0)
  8343.  04h    DWORD    NESL_Cfg_ModLName   -> ASCIZ long name of NESL module
  8344.         (typically -> "NetWare Event Service Layer for 16-Bit DOS")
  8345.  08h    DWORD    NESL_Cfg_ModSName   -> ASCIZ short name of NESL module
  8346.         (typically -> "NESL")
  8347.  0Ch    WORD    NESL_Cfg_ModMajVer  Major Version of NESL itself (=1)
  8348.  0Eh    WORD    NESL_Cfg_ModMinVer  Minor Version of NESL itself (=0)
  8349.  
  8350. Format of NESL Producer Event Control Block (PECB):
  8351. Offset    Size    Description    (Table 2227)
  8352.  00h    WORD    PECB_MajVer  Major Version of this structure (=1)
  8353.  02h    WORD    PECB_MinVer  Minor Version of this structure (=0)
  8354.  04h    DWORD    PECB_NextProducer   -> next PECB.  NULL if last.
  8355.  08h    DWORD    PECB_ClassName        -> ASCIZ string identifying event
  8356.                       class (see #2231)
  8357.  0Ch    DWORD    PECB_ConsumerList   -> list of consumers for this event class
  8358.  10h    DWORD    PECB_DataPtr        -> points to additional data during events
  8359.  14h    DWORD    PECB_Flags
  8360.         Bit 0    =0  consumers should be called "top down" for this
  8361.                 event class.  (OSI level 7 down to OSI level 1)
  8362.             =1  consumers should be called "bottom up"
  8363.         Bits 1-31   Reserved =0
  8364.  18h  8 BYTEs    PECB_Reserved (all zeros)
  8365. Note:    Although the event producer provides the memory for the PECB, the
  8366.       NESL module controls this memory until the event class is
  8367.       de-registered.
  8368.     While owned by NESL, this structure should be treated as read-only,
  8369.       except for the PECB_DataPtr field.
  8370.  
  8371. Format of NESL Consumer Event Control Block (CECB):
  8372. Offset    Size    Description    (Table 2228)
  8373.  00h    WORD    CECB_MajVer  Major Version of this structure (=1)
  8374.  02h    WORD    CECB_MinVer  Minor Version of this structure (=0)
  8375.  04h    DWORD    CECB_NextConsumer   -> next CECB.  NULL if last.
  8376.  08h    DWORD    CECB_ClassName        -> ASCIZ string identifying event
  8377.                       class (see #2231)
  8378.  0Ch    DWORD    CECB_NotifProc        -> FAR CALL event handler (see #2229)
  8379.  10h    WORD    CECB_OSILevel
  8380.         Bits 4-7 = OSI Layer of this module (1 through 7)
  8381.         Bits 0-3 = relative ordering with other modules on same layer
  8382.  13h 14 BYTEs    CECB_Reserved (all zeros)
  8383. Note:    Although the event consumer provides the memory for the CECB, the
  8384.       NESL module controls this memory until the consumer is de-registered.
  8385.     While owned by NESL, this structure should be treated as read-only,
  8386.  
  8387. (Table 2229)
  8388. Values NESL Consumer Notification Procedure is called with:
  8389.     ES:SI -> Event Parameter Block (EPB) (see #2230)
  8390. Return: AX = completion code (0000h, 8005h) (see #2225)
  8391.     ES:SI -> still points to EPB
  8392. Desc:    Called by NESL to notify the consumer when an event has occurred in
  8393.       an event class for which it has registered.
  8394. SeeAlso: #2228
  8395.  
  8396. Format of NESL Event Parameter Block (EPB):
  8397. Offset    Size    Description    (Table 2230)
  8398.  00h    WORD    EPB_MajVer  Major Version of this structure (=1)
  8399.  02h    WORD    EPB_MinVer  Minor Version of this structure (=0)
  8400.  04h    DWORD    EPB_ClassName  -> ASCIZ string identifying event class
  8401.                   (see #2231)
  8402.  08h    DWORD    EPB_EventName  -> ASCIZ string identifying event within
  8403.                   class (see #2232)
  8404.  0Ch    DWORD    EPB_ModuleName -> ASCIZ string identifying module
  8405.                   producing event
  8406.  10h    DWORD    EPB_DataPtr0   -> event-defined data or NULL if not used
  8407.  14h    DWORD    EPB_DataPtr1   -> event-defined data or NULL if not used
  8408.  18h  8 BYTEs    EPB_Reserved (all zeros)
  8409.  
  8410. (Table 2231)
  8411. Values for NESL Event Class Names:
  8412.  Event Class        Description
  8413.  -------------------    -----------------------------------------
  8414.  Service Suspend    Suspension of a service.  Called top-down.
  8415.  Service Resume        Resumption/availability of a service. Called bottom-up.
  8416.  Service/Status Change    Change in status or level of service.  Called top-down.
  8417.  Suspend Request    Request to suspend a service.  Called bottom-up.
  8418. Note:    Contact Novell Labs to register new event classes.
  8419.  
  8420. (Table 2232)
  8421. Values for NESL Event Names:
  8422.  Event Name            Class            Description
  8423.  --------------------------    -------------        ---------------------------
  8424.  MLID Cable Disconnect        Service Suspend        Cable disconnected from NIC
  8425.  MLID Card Removal        Service Suspend        PCMCIA card removed
  8426.  MLID Hardware Failure        Service Suspend        Serious hardware
  8427.                               failure in NIC
  8428.  MLID Not In Range        Service Suspend        Wireless access point
  8429.                               is out of range
  8430.  MLID Shutdown            Service Suspend        MLID was shut down
  8431.  MLID Media Access Denied    Service Suspend        Access to physical
  8432.                               medium unsuccessful
  8433.  MLID Cable Reconnect        Service Resume        Cable re-connected to NIC
  8434.  MLID Card Insertion Complete    Service Resume        PCMCIA card inserted
  8435.  MLID In Range            Service Resume        Wireless access point
  8436.                               in range
  8437.  MLID Reset            Service Resume        MLID was just reset
  8438.  MLID Access Point Change    Serv/Status Change  Station has moved to
  8439.                               new access point
  8440.  MLID Speed Change        Serv/Status Change  Change in communic. speed
  8441. Note:    Contact Novell Labs to register new event names.
  8442.     For all predefined events above, EPB_DataPtr0 (see #2230) points
  8443.       to the MLID Configuration table (see AX=C000h"ODI") for the
  8444.       affected MLID.
  8445. --------N-2FC000-----------------------------
  8446. INT 2F - Novell NetWare Connect NETWARN - INSTALLATION CHECK
  8447.     AX = C000h
  8448. Return: AL = FFh if installed
  8449.         SI = segment of resident portion
  8450. Program: NETWARN is a utility supplied with NetWare Connect to warn a
  8451.       remote dialup user when programs are about to be loaded slowly over
  8452.       the modem link.
  8453. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8454. Note:    on return, verify that it is NETWARN responding by examining signature
  8455.       at in NETWARN's data table in the resident segment (see #2233)
  8456. SeeAlso: AX=C000h"ODI",AX=C000h"NESL"
  8457.  
  8458. Format of NETWARN Configuration structure:
  8459. Offset    Size    Description    (Table 2233)
  8460.  103h 7 BYTEs    signature string "NETWARN"
  8461.  10Ah    BYTE    major version in ASCII (="1")
  8462.  10Bh    BYTE    minor version in ASCII (="0")
  8463.  10Ch    DWORD    minimum size of EXE cared about in bytes (/S=xxxx)
  8464.  110h    WORD    same value in kilobytes (see 0113h, bit 4 below)
  8465.  112h    BYTE    multiplex code (AH value) actually being used
  8466.  113h    WORD    options (see #2234)
  8467.  115h    DWORD    INT 21h vector before NETWARN loaded
  8468.  119h    DWORD    INT 2Fh vector before NETWARN loaded
  8469.  11Dh 16 BYTEs    ASCIIZ local name of last device which was checked
  8470.  12Dh 128 BYTEs ASCIIZ remote name of last device which was checked
  8471. Note:    the specified offsets are from the start of the resident segment
  8472.  
  8473. Bitfields for NETWARN options:
  8474. Bit(s)    Description    (Table 2234)
  8475.  0    ??? (=0)
  8476.  1    /U (Unload) selected (never in resident)
  8477.  2    /E (Enabled) Will trap & check EXEC's
  8478.  3    /D (Disabled) No EXEC checking done
  8479.  4    /S (Size) was set (see 010Ch, 0110h above)
  8480.  5    /P (Path shown)
  8481.  6    /H or /? (Help) (never in resident)
  8482. SeeAlso: #2233
  8483. --------f-2FC000-----------------------------
  8484. INT 2F - FN32 32 character filename utilities - INSTALLATION CHECK
  8485.     AX = C000h
  8486. Return: AL = FFh if installed
  8487.        ES:DI -> signature string "FN32 32CHAR TSR"
  8488. Program: FN32 is a TSR which supports 32 character filenames under PC/MS-DOS
  8489. Note:    the TSR intercepts INT 21 calls and performs filename substitution by
  8490.       managing dictionary files in each directory which contains long
  8491.       filenames
  8492. --------M-2FC000-----------------------------
  8493. INT 2F - QMR - INSTALLATION CHECK
  8494.     AX = C000h
  8495. Return: AL = FFh if installed
  8496.         ES:DI -> signature string "QMR1!"
  8497. Program: QMR (Cove Software, Quick Mouse Reset) monitors the mouse
  8498.       service interrupt (int 33h) and substitutes a fast software
  8499.       reset (mouse fn 21h) for the slow hardware reset (mouse fn 0).
  8500. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8501. SeeAlso: AX=C001h"QMR",AX=C002h"QMR",AX=C003h"QMR"
  8502. --------V-2FC000-----------------------------
  8503. INT 2F - VGAsave v1.93 - INSTALLATION CHECK
  8504.     AX = C000h
  8505. Return: AL = FFh if installed
  8506.         BX = segment of resident code
  8507. Program: VGAsave is a freeware VGA-specific, mouse-aware screenblanker by Bill
  8508.       Javurek
  8509. Range:    AH=C0h to AH=FFh, selected by scanning for a free multiplex number
  8510. Note:    the transient portion of VGAsave compares the first 38 bytes of the
  8511.       resident code (addressed through BX) against its own copy of the
  8512.       resident code to complete the installation check
  8513. SeeAlso: INT 14/AX=AA01h,INT 2F/AH=93h
  8514. Index:    screen saver;VGAsave
  8515. --------V-2FC000-----------------------------
  8516. INT 2F - AD-DOS - INSTALLATION CHECK
  8517.     AX = C000h
  8518. Return: AL = FFh if installed
  8519.         BX = 4144h ('AD')
  8520.         CX = 2D44h ('-D')
  8521.         DX = 4F53h ('OS')
  8522. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  8523.       MS Windows
  8524. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8525. SeeAlso: AX=C001h,AX=C003h,AX=C005h,AX=C007h,AX=C009h,AX=C020h,INT 14/AX=AA01h
  8526. Index:    screen saver;AD-DOS
  8527. --------U-2FC000-----------------------------
  8528. INT 2F U - WANG_ER.COM - INSTALLATION CHECK
  8529.     AX = C000h
  8530. Return: AL = FFh if installed
  8531.         ES = segment of resident code
  8532. Program: WANG_ER is a TSR from Compaq which permits Compaq systems equipped
  8533.       with 3-mode floppy drives to read Wang document diskettes
  8534. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8535. Note:    The installation check is completed by comparing the resident code
  8536.       with the copy in the transient program
  8537. --------i-2FC000-----------------------------
  8538. INT 2F O - ASPIHOOK.SYS - INSTALLATION CHECK
  8539.     AX = C000h
  8540. Return: AL = FFh if multiplex number in use
  8541.         ES:DI -> ASCIZ signature "ASPIHOOK" if ASPIHOOK.SYS installed
  8542. Program: ASPIHOOK is a device driver for monitoring SCSI activity through an
  8543.       ASPI host manager; it is part of the Personal Measure system
  8544.       activity monitor from Spirit of Performance, Inc.
  8545. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8546. SeeAlso: AX=C000h"PMEASURE"
  8547. --------i-2FC000-----------------------------
  8548. INT 2F - PMEASURE.EXE - INSTALLATION CHECK
  8549.     AX = C000h
  8550. Return: AL = FFh if multiplex number in use
  8551.         ES:DI -> ASCIZ signature "PMEASURE.EXE" if PMEASURE.EXE installed
  8552. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  8553.       is part of the Personal Measure system activity monitor from Spirit
  8554.       of Performance, Inc.
  8555. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8556. Note:    If a Personal Measure Hook Module, such as ASPIHOOK.SYS, is already
  8557.       installed, PMEASURE.EXE uses the next highest free multiplex number.
  8558. SeeAlso: AX=C000h"ASPIHOOK",AX=C000h"PERSONAL MEASURE"
  8559. --------i-2FC000-----------------------------
  8560. INT 2F - PERSONAL MEASURE - HOOK MODULE INSTALLATION CHECK
  8561.     AX = C000h
  8562. Return: AL = FFh if installed
  8563.     ES:DI -> signature string "PMEASUREHOOK"
  8564.     AX = C000 if not installed, per mux id conventions
  8565.     DH = major release number (binary)
  8566.     DL = minor release number (binary)
  8567. Program: The Personal Measure system activity monitor from Spirit of
  8568.       Performance, Inc. uses an extensible series of modules to hook
  8569.       into various operating system interfaces and monitor system calls.
  8570.       Current hook modules are ASPIHOOK.SYS for ASPI device activity
  8571.       and CDRHOOK.SYS for non-ASPI CD-ROM activity.     All hook modules
  8572.       share the same mux id.
  8573. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8574. SeeAlso: AX=C000h"PMEASURE.EXE",AX=C001h"PERSONAL MEASURE"
  8575. --------c-2FC000-----------------------------
  8576. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALLATION CHECK
  8577.     AX = C000h
  8578. Return: AL = FFh if installed
  8579.         SI = signature value 20D6h
  8580.         DI = signature value 8761h
  8581.         ES:BX -> configuration table (see #2235)
  8582.         CX = ??? (0300h)
  8583.         DX = ??? (0020h)
  8584. Program: PCACHE is the resident print spooler portion of PrintCache by
  8585.       LaserTools; it may use either memory or disk space to spool output
  8586. Range:    AH=C0h to AH=FFh, selected by commandline switch
  8587. SeeAlso: AX=0100h/SI=20D6h,AX=C001h"PCACHE"
  8588.  
  8589. Format of PrintCache configuration table:
  8590. Offset    Size    Description    (Table 2235)
  8591.  00h 26 BYTEs    ASCIZ signature string "TORQ Configuration Table: "
  8592.  1Ah  2 BYTEs    ???
  8593.  1Ch    DWORD    -> data table (see #2236)
  8594.  20h  4 BYTEs    ASCIZ version string ("3.1" for v3.1)
  8595.  24h  5 BYTEs    ???
  8596.  29h 12 BYTEs    ASCIZ version date string ("Aug 31 1993" for v3.1)
  8597.  35h    WORD    buffered port type (01h = LPT, 02h = COM)
  8598.  37h    WORD    buffered port BIOS port number
  8599.  39h  5 BYTEs    ASCIZ buffered port name ("LPTn" or "COMn")
  8600.  3Eh    WORD    physical port type (01h = LPT, 02h = COM)
  8601.  40h    WORD    physical port BIOS port number
  8602.  42h  5 BYTEs    ASCIZ physical port name ("LPTn" or "COMn")
  8603.  47h    BYTE    port driver IRQ
  8604.  48h 21 BYTEs    ???
  8605.  5Dh    WORD    buffer size in K
  8606.  5Fh 27 BYTEs    ???
  8607.  7Ah    BYTE    popup hotkey shift states (see #0477 at INT 16/AH=02h)
  8608.  7Bh    BYTE    popup hotkey scan code (see #0005 at INT 09h"IRQ1")
  8609.  7Ch  4 BYTEs    ???
  8610.  80h 20 BYTEs    ASCIZ printer type name
  8611.     ???
  8612.  
  8613. Format of PrintCache data table:
  8614. Offset    Size    Description    (Table 2236)
  8615.  00h  2 BYTEs    ???
  8616.  02h    DWORD    -> ??? entry point
  8617.     ???
  8618. --------U-2FC000-----------------------------
  8619. INT 2F - Frank Kintrup TSR Utilities - INSTALLATION CHECK
  8620.     AX = C000h
  8621. Return: AL = FFh if installed
  8622.         BX = program ID (see #2237)
  8623.         CX = 464Bh (signature "FK")
  8624.         DX = revision number (DH = major, DL = minor)
  8625.         ES = resident segment of TSR
  8626. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  8627. SeeAlso: AX=C001h"Kintrup",AX=C002h"Kintrup"
  8628.  
  8629. (Table 2237)
  8630. Values for Frank Kintrup TSR program ID:
  8631.  4153h    "AS"    ASCII.COM    ASCII table with paste function
  8632.  434Ch    "CL"    CLOCK.COM    clock with date/time display and alarm
  8633.  5043h    "PC"    PCALC.COM    programmer's calculator with paste function
  8634.  5343h    "SC"    SCRSAVE.COM    screen saver with mouse support and hotkey
  8635.  5544h    "UD"    UNDEL.COM    undelete program like SMARTCAN or DPROTECT
  8636. --------K-2FC000-----------------------------
  8637. INT 2F U - HP 100LX/200LX - PUSHKEYS - INSTALLATION CHECK
  8638.     AX = C000h
  8639. Return: AL = FFh if possibly installed
  8640. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  8641. SeeAlso: AX=C001h"HP 100LX",AX=C0AEh"HP 100LX",AX=C0AFh"HP 100LX"
  8642. --------V-2FC000-----------------------------
  8643. INT 2F - DIMWIT - INSTALLATION CHECK
  8644.     AX = C000h
  8645. Return: AL = FFh if installed
  8646.         ES:DI -> signature string "DIMDOS" or "DIMWIN"
  8647. Program: DIMWIT is a freeware Windows-aware screen blanker by Larry Board
  8648. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8649. SeeAlso: AX=C000h"AD-DOS",AX=C001h"DIMWIT"
  8650. Index:    screen saver;DIMWIT
  8651. --------F-2FC000BX444B-----------------------
  8652. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
  8653.     AX = C000h
  8654.     BX = 444Bh ('DK')
  8655.     CX = 4A4Eh ('AN')
  8656. Return: AL = status
  8657.         00h not installed, OK to install
  8658.         FFh installed
  8659.         BX = 646Bh ('dk')
  8660.         CX = 6A6Eh ('an')
  8661. Range:    AH=C0h to AH=FFh, selected automatically
  8662. SeeAlso: AH=C0h"MTEZ"
  8663. --------V-2FC000-----------------------------
  8664. INT 2F U - TSENGP.COM - INSTALLATION CHECK
  8665.     AX = C000h
  8666. Return: AL = status
  8667.         00h not installed, OK to install
  8668.         FFh installed
  8669.         DS = segment of resident code
  8670. Program: TSENGP.COM is a TSR supplied by Compaq to fix an incompatibility
  8671.       between some applications and Tseng ET4000-based video adapters
  8672. Range:    AH=C0h to AH=FFh, selected automatically
  8673. Note:    the installation check is completed by comparing the first eleven
  8674.       bytes at DS:005Fh against the TSR's code (80h FCh 06h 74h 0Ah
  8675.       80h FCh 07h 74h 05h EAh)
  8676. --------N-2FC000-----------------------------
  8677. INT 2F U - LapLink RemoteAccess (LLRA) - INSTALLATION CHECK
  8678.     AX = C000h
  8679. Return: AL = FFh if one of the components is installed
  8680.     CX:BX -> signature within LLRA component:
  8681.         "TSI_LapLinkCore" for LLRA1.EXE
  8682.         "TSI_Blackbird"   for LLRA2.EXE
  8683.         "TSI_Redirector"  for LLRA3.EXE
  8684.         "TSI_Compression" for LLRA4.EXE
  8685.     DL = major version number
  8686.     DH = minor version number
  8687. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8688. Note:    LapLink components are installed in the order listed above, but not
  8689.       necessarily all four; each gets its own multiplex number (default
  8690.       C0h-C3h)
  8691. SeeAlso: AX=C002h"LapLink",AX=C205h"LapLink",AX=C2F0h"LapLink"
  8692. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink",AX=C3F0h"LapLink"
  8693. SeeAlso: AX=C3F1h"LapLink"
  8694. --------M-2FC001-----------------------------
  8695. INT 2F - QMR - REQUEST HARDWARE RESET
  8696.     AX = C001h
  8697. Return: ES = QMR code segment
  8698.     AL destroyed
  8699. Desc:    this function is used to force a full mouse reset when QMR is installed
  8700. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  8701. --------V-2FC001-----------------------------
  8702. INT 2F - DIMWIT - GET CONFIGURATION DATA
  8703.     AX = C001h
  8704. Return: ES:DI -> TSR configuration data (see #2238)
  8705. Program: DIMWIT is a freeware Windows-aware screen blanker by Larry Board
  8706. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8707. SeeAlso: AX=C000h"DIMWIT",AX=C001h"AD-DOS"
  8708. Index:    screen saver;DIMWIT
  8709.  
  8710. Format of DIMWIT TSR configuration data:
  8711. Offset    Size    Description    (Table 2238)
  8712.  00h    WORD    blanking delay in clock ticks
  8713.  02h    BYTE    instant-blanking hotkey scan code (see #0005)
  8714.         Ctrl and Alt must also be pressed
  8715. --------V-2FC001ES0000-----------------------
  8716. INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
  8717.     AX = C001h
  8718.     ES = 0000h
  8719. Return: AL = 00h if successful
  8720.         ES = AD-DOS TSR Code Segment
  8721. SeeAlso: AX=C000h"AD-DOS",AX=C001h"DIMWIT"
  8722. Index:    screen saver;AD-DOS
  8723. --------c-2FC001-----------------------------
  8724. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ENTRY POINTS
  8725.     AX = C001h
  8726. Return: AL = FFh if installed
  8727.         ES:BX -> ???
  8728.         ES:DX -> ???
  8729.         ES:SI -> ???
  8730.         ES:DI -> ??? (equivalent to AX=C002h)
  8731. SeeAlso: AX=C000h"PCACHE",AX=C002h"PCACHE"
  8732. --------U-2FC001-----------------------------
  8733. INT 2F - Frank Kintrup TSR Utilities - CLOCK - DISABLE DISPLAY UPDATE
  8734.     AX = C001h
  8735. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  8736. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  8737. --------K-2FC001CX03FB-----------------------
  8738. INT 2F U - HP 100LX/200LX - PUSHKEYS - INTERNAL - UNINSTALL
  8739.     AX = C001h
  8740.     CX = 03FBh return address to continue uninstall if possible
  8741. Return: program uninstalled
  8742. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  8743. SeeAlso: AX=C000h"HP 100LX",AX=C0AEh"HP 100LX",AX=C0AFh"HP 100LX"
  8744. --------i-2FC001-----------------------------
  8745. INT 2F - PERSONAL MEASURE - PASS PARAMETERS TO HOOK MODULE(S)
  8746.     AX = C001h
  8747.     DX = segment of PMEASURE.EXE or 0000h
  8748.     BX = offset in PMEASURE.EXE or 0000h
  8749.     CX = offset in PMEASURE.EXE or 0000h
  8750. Return: None
  8751. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  8752.       is part of the Personal Measure system activity monitor from Spirit
  8753.       of Performance, Inc.    PMEASURE uses this call to inform its hook
  8754.       modules whether or not it is running and to pass information about
  8755.       shared data and procedures.
  8756. Warning: This information documents a function that is private to Personal
  8757.       Measure and is provided as information only.    It should NOT be called
  8758.       by any software other than Personal Measure.
  8759. SeeAlso: AX=C000h"PERSONAL MEASURE HOOK MODULE"
  8760. --------V-2FC002-----------------------------
  8761. INT 2F - AD-DOS - CHECK FOR NEW INPUT
  8762.     AX = C002h
  8763. Return: AL = 00h if successful
  8764.         BX = status
  8765.         0000h no input since last check
  8766.         0001h new input available
  8767. Note:    this call also resets the new-input flag
  8768. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  8769. Index:    screen saver;AD-DOS
  8770. --------M-2FC002-----------------------------
  8771. INT 2F - QMR - DISABLE QMR
  8772.     AX = C002h
  8773. Return: ES = QMR code segment
  8774.     AL destroyed
  8775. Desc:    this call temporarily disables QMR
  8776. SeeAlso: AX=C000h"QMR",AX=C003h"QMR"
  8777. --------c-2FC002-----------------------------
  8778. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET BUFFER SIZE
  8779.     AX = C002h
  8780. Return: AX = ??? in K
  8781.     BX = size of print buffer in K
  8782. Program: PCACHE is the resident print spooler portion of PrintCache by
  8783.       LaserTools; it may use either memory or disk space to spool output
  8784. SeeAlso: AX=C000h"PCACHE"
  8785. --------U-2FC002-----------------------------
  8786. INT 2F - Frank Kintrup TSR Utilities - CLOCK - ENABLE DISPLAY UPDATE
  8787.     AX = C002h
  8788. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  8789. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  8790. --------N-2FC002-----------------------------
  8791. INT 2F U - LapLink RemoteAccess (LLRA) - Core - ???
  8792.     AX = C002h
  8793.     details not yet available
  8794. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8795. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C2F0h"LapLink"
  8796. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
  8797. --------V-2FC003-----------------------------
  8798. INT 2F - AD-DOS - SET MINUTES TO WAIT
  8799.     AX = C003h
  8800.     BX = minutes to wait before blanking screen
  8801. Return: AL = 00h if successful
  8802. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  8803.       MS Windows
  8804. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8805. Note:    this call also resets the delay timer
  8806. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  8807. Index:    screen saver;AD-DOS
  8808. --------M-2FC003-----------------------------
  8809. INT 2F - QMR - ENABLE QMR
  8810.     AX = C003h
  8811. Return: ES = QMR code segment
  8812.     AL destroyed
  8813. Desc:    this call enables QMR after it has been disabled
  8814. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  8815. --------c-2FC003-----------------------------
  8816. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  8817.     AX = C003h
  8818. Return: BX destroyed
  8819. SeeAlso: AX=C004h"PCACHE"
  8820. --------V-2FC004-----------------------------
  8821. INT 2F - AD-DOS - GET MINUTES TO WAIT
  8822.     AX = C004h
  8823. Return: AL = 00h if successful
  8824.         BX = minutes to wait before blanking screen
  8825. SeeAlso: AX=C000h"AD-DOS",AX=C003h"AD-DOS"
  8826. Index:    screen saver;AD-DOS
  8827. --------c-2FC004-----------------------------
  8828. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  8829.     AX = C004h
  8830. Return: BX destroyed
  8831. SeeAlso: AX=C003h"PCACHE"
  8832. --------V-2FC005-----------------------------
  8833. INT 2F - AD-DOS - SET BLANKER STATUS
  8834.     AX = C005h
  8835.     BX = new state (0000h inactive, 0001h active) (default 0001h)
  8836. Return: AL = 00h if successful
  8837. SeeAlso: AX=C006h"AD-DOS"
  8838. Index:    screen saver;AD-DOS
  8839. --------c-2FC005-----------------------------
  8840. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  8841.     AX = C005h
  8842.     ???
  8843. Return: BX destroyed
  8844.     ???
  8845. Program: PCACHE is the resident print spooler portion of PrintCache by
  8846.       LaserTools; it may use either memory or disk space to spool output
  8847. Range:    AH=C0h to AH=FFh, selected by commandline switch
  8848. SeeAlso: AX=C000h"PCACHE"
  8849. --------V-2FC006-----------------------------
  8850. INT 2F - AD-DOS - GET BLANKER STATUS
  8851.     AX = C006h
  8852. Return: AL = 00h if successful
  8853.         BX = current state of screen blanker (0000h inactive, 0001h active)
  8854. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  8855.       MS Windows
  8856. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8857. SeeAlso: AX=C000h"AD-DOS",AX=C005h"AD-DOS"
  8858. Index:    screen saver;AD-DOS
  8859. --------c-2FC006-----------------------------
  8860. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  8861.     AX = C006h
  8862.     ???
  8863. Return: BX destroyed
  8864.     ???
  8865. Note:    this function appears to be identical to AX=C007h
  8866. SeeAlso: AX=C000h"PCACHE",AX=C007h"PCACHE"
  8867. --------V-2FC007-----------------------------
  8868. INT 2F - AD-DOS - SET HOT KEY
  8869.     AX = C007h
  8870.     BX = hot key
  8871.     CL = hot key shift status
  8872. Return: AL = 00h if successful
  8873. SeeAlso: AX=C008h"AD-DOS"
  8874. Index:    screen saver;AD-DOS
  8875. --------c-2FC007-----------------------------
  8876. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  8877.     AX = C007h
  8878.     ???
  8879. Return: BX destroyed
  8880.     ???
  8881. Note:    this function appears to be identical to AX=C006h
  8882. SeeAlso: AX=C000h"PCACHE",AX=C006h"PCACHE"
  8883. --------V-2FC008-----------------------------
  8884. INT 2F - AD-DOS - GET CURRENT HOT KEY
  8885.     AX = C008h
  8886. Return: AX = status
  8887.         0000h successful
  8888.         BX = Hot Key
  8889.         CL = Hot Key Shift Status
  8890.         0008h otherwise
  8891. SeeAlso: AX=C000h"AD-DOS",AX=C007h"AD-DOS"
  8892. Index:    screen saver;AD-DOS
  8893. --------c-2FC008-----------------------------
  8894. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  8895.     AX = C008h
  8896. Return: BX destroyed
  8897. SeeAlso: AX=C000h"PCACHE",AX=C009h"PCACHE"
  8898. --------V-2FC009-----------------------------
  8899. INT 2F - AD-DOS - UNBLANK MONITOR
  8900.     AX = C009h
  8901. Return: AL = 00h if successful
  8902. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  8903.       MS Windows
  8904. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8905. Note:    this function works by simulating keyboard activity
  8906. Index:    screen saver;AD-DOS
  8907. --------c-2FC009-----------------------------
  8908. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  8909.     AX = C009h
  8910. Return: BX destroyed
  8911. Program: PCACHE is the resident print spooler portion of PrintCache by
  8912.       LaserTools; it may use either memory or disk space to spool output
  8913. Range:    AH=C0h to AH=FFh, selected by commandline switch
  8914. SeeAlso: AX=C000h"PCACHE",AX=C008h"PCACHE"
  8915. --------V-2FC00A-----------------------------
  8916. INT 2F - AD-DOS - ???
  8917.     AX = C00Ah
  8918. Return: AX = status
  8919.         0000h successful
  8920.         BH = ??
  8921.         BL = ??
  8922.         000Ah failed
  8923. Index:    screen saver;AD-DOS
  8924. --------c-2FC00A-----------------------------
  8925. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  8926.     AX = C00Ah
  8927.     ???
  8928. Return: AH = bit flags
  8929.         bit 5: ???
  8930.     AL = bit flags
  8931.         bit 4: ???
  8932.         bit 3: ???
  8933.     BX destroyed
  8934.     ???
  8935. SeeAlso: AX=C000h"PCACHE"
  8936. --------V-2FC00B-----------------------------
  8937. INT 2F - AD-DOS - ???
  8938.     AX = C00Bh
  8939. Return: AX = status
  8940.         0000h successful
  8941.         000Bh failed
  8942. Index:    screen saver;AD-DOS
  8943. --------c-2FC00B-----------------------------
  8944. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  8945.     AX = C00Bh
  8946. Return: BX destroyed
  8947. SeeAlso: AX=C000h"PCACHE"
  8948. --------V-2FC00C-----------------------------
  8949. INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
  8950.     AX = C00Ch
  8951. Return: AX = status
  8952.         0000h successful
  8953.         000Ch failed
  8954. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  8955.       MS Windows
  8956. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8957. Index:    screen saver;AD-DOS
  8958. --------c-2FC00C-----------------------------
  8959. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  8960.     AX = C00Ch
  8961. Return: AX = ??? (0000h)
  8962.     BX = ??? (0000h)
  8963.     CX = ??? (0100h)
  8964.     DL = ???
  8965.     DH = ???
  8966. SeeAlso: AX=C000h"PCACHE"
  8967. --------c-2FC00D-----------------------------
  8968. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ???
  8969.     AX = C00Dh
  8970.     DL = ???
  8971. Return: BX destroyed
  8972. Program: PCACHE is the resident print spooler portion of PrintCache by
  8973.       LaserTools; it may use either memory or disk space to spool output
  8974. Range:    AH=C0h to AH=FFh, selected by commandline switch
  8975. SeeAlso: AX=C000h"PCACHE"
  8976. --------V-2FC00E-----------------------------
  8977. INT 2F - AD-DOS - SET PASSWORD STATUS
  8978.     AX = C00Eh
  8979.     BX = new state (0000h disabled, 0001h enabled)
  8980. Return: ???
  8981. SeeAlso: AX=C000h"AD-DOS",AX=C00Fh"AD-DOS"
  8982. Index:    screen saver;AD-DOS
  8983. --------c-2FC00E-----------------------------
  8984. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALL ???
  8985.     AX = C00Eh
  8986.     ES:DX -> ???
  8987. Return: BX destroyed
  8988. Note:    ES:DX is stored internally if the variable is currently 0000h:0000h,
  8989.       but ignored if already set; a counter is incremented
  8990. SeeAlso: AX=C000h"PCACHE",AX=C00Fh"PCACHE"
  8991. --------V-2FC00F-----------------------------
  8992. INT 2F - AD-DOS - GET PASSWORD STATUS
  8993.     AX = C00Fh
  8994. Return: BX = current state (0000h disabled, 0001h enabled)
  8995. SeeAlso: AX=C00Eh"AD-DOS"
  8996. Index:    screen saver;AD-DOS
  8997. --------c-2FC00F-----------------------------
  8998. INT 2F U - PrintCache v3.1 PCACHE.EXE - REMOVE ???
  8999.     AX = C00Fh
  9000. Return: BX destroyed
  9001. Note:    this function decrements the counter used by AX=C00Eh, and clears the
  9002.       internal pointer variable to 0000h:0000h when it reaches zero
  9003. SeeAlso: AX=C000h"PCACHE",AX=C00Eh"PCACHE"
  9004. --------c-2FC010-----------------------------
  9005. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  9006.     AX = C010h
  9007.     CX = index of ??? table (00h-02h, others treated as 00h)
  9008.     SI = offset into data table
  9009. Return:    AL = byte at specified offset into table
  9010.     BX destroyed
  9011. SeeAlso: AX=C000h"PCACHE"
  9012. --------c-2FC011-----------------------------
  9013. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  9014.     AX = C011h
  9015. Return: AX = ??? (0007h)
  9016.     BX = ??? (0001h)
  9017.     CH = ???
  9018.     CL = ???
  9019. SeeAlso: AX=C000h"PCACHE"
  9020. --------c-2FC012-----------------------------
  9021. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  9022.     AX = C012h
  9023. Return: AX = ???
  9024.     BX = ???
  9025.     CX = ???
  9026.     DX = ???
  9027. SeeAlso: AX=C000h"PCACHE"
  9028. --------c-2FC013-----------------------------
  9029. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  9030.     AX = C013h
  9031.     ???
  9032. Return: BX destroyed
  9033.     ???
  9034. Program: PCACHE is the resident print spooler portion of PrintCache by
  9035.       LaserTools; it may use either memory or disk space to spool output
  9036. Range:    AH=C0h to AH=FFh, selected by commandline switch
  9037. SeeAlso: AX=C000h"PCACHE"
  9038. --------c-2FC014-----------------------------
  9039. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  9040.     AX = C014h
  9041.     ???
  9042. Return: BX destroyed
  9043.     ???
  9044. SeeAlso: AX=C000h"PCACHE"
  9045. --------c-2FC015-----------------------------
  9046. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  9047.     AX = C015h
  9048.     ???
  9049. Return: BX destroyed
  9050.     ???
  9051. SeeAlso: AX=C000h"PCACHE"
  9052. --------c-2FC016-----------------------------
  9053. INT 2F U - PrintCache v3.1 PCACHE.EXE - INCREMENT ???
  9054.     AX = C016h
  9055. Return: BX destroyed
  9056. SeeAlso: AX=C000h"PCACHE",AX=C017h"PCACHE"
  9057. --------c-2FC017-----------------------------
  9058. INT 2F U - PrintCache v3.1 PCACHE.EXE - DECREMENT ???
  9059.     AX = C017h
  9060. Return: BX destroyed
  9061. SeeAlso: AX=C000h"PCACHE",AX=C016h"PCACH"
  9062. --------c-2FC018-----------------------------
  9063. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  9064.     AX = C018h
  9065.     ???
  9066. Return: BX destroyed
  9067.     ???
  9068. Note:    the first instruction of this function is an indirect jump which points
  9069.       at a RET by default
  9070. SeeAlso: AX=C000h"PCACHE",AX=C019h"PCACHE"
  9071. --------c-2FC019-----------------------------
  9072. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  9073.     AX = C019h
  9074.     ???
  9075. Return: BX destroyed
  9076.     ???
  9077. Note:    the first instruction of this function is an indirect jump which points
  9078.       at a RET by default
  9079. SeeAlso: AX=C000h"PCACHE",AX=C018h"PCACHE"
  9080. --------c-2FC01A-----------------------------
  9081. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  9082.     AX = C01Ah
  9083. Return: BX destroyed
  9084. SeeAlso: AX=C000h"PCACHE",AX=C01Bh"PCACHE"
  9085. --------c-2FC01B-----------------------------
  9086. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  9087.     AX = C01Bh
  9088. Return: BX destroyed
  9089. SeeAlso: AX=C000h"PCACHE",AX=C01Ah"PCACHE"
  9090. --------c-2FC01C-----------------------------
  9091. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  9092.     AX = C01Ch
  9093.     ???
  9094. Return: AX = ???
  9095.     BX destroyed
  9096. SeeAlso: AX=C000h"PCACHE"
  9097. --------c-2FC01D-----------------------------
  9098. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  9099.     AX = C01Dh to C01Fh
  9100. Return: BX destroyed
  9101. Program: PCACHE is the resident print spooler portion of PrintCache by
  9102.       LaserTools; it may use either memory or disk space to spool output
  9103. Range:    AH=C0h to AH=FFh, selected by commandline switch
  9104. SeeAlso: AX=C000h"PCACHE"
  9105. --------V-2FC020-----------------------------
  9106. INT 2F - AD-DOS - GET AND RESET VxD API STATUS
  9107.     AX = C020h
  9108. Return: AL = 00h if successful
  9109.         BX = VxD API Status
  9110.         0000h no error
  9111.         0001h error
  9112.         0100h neither Windows 3.X enhanced mode nor Windows/386 2.x
  9113.               is running
  9114.         0200h VM API entry point not found (VxD not installed)
  9115. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  9116. Note:    this call resets the VxD API Status to zero
  9117. SeeAlso: AX=1602h,AX=1607h
  9118. Index:    screen saver;AD-DOS
  9119. --------V-2FC04E-----------------------------
  9120. INT 2F - Explosiv v2.00+ - NON-TSR EXECUTING CHECK
  9121.     AX = C04Eh
  9122. Return: AL = 4Fh if Explosiv is running but not memory-resident
  9123. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  9124.       by H&G Software (Reidar Gresseth and Chris Hook)
  9125. Range:    AH=C0h to AH=C9h, selected by configuration
  9126. SeeAlso: AX=C050h
  9127. Index:    screen saver;Explosiv
  9128. --------V-2FC050-----------------------------
  9129. INT 2F - Explosiv v2.00+ - INSTALLATION CHECK
  9130.     AX = C050h
  9131. Return: AL = 51h if installed
  9132.     ---v3.0+ ---
  9133.         BX = interval in clock ticks
  9134.         CH = animation display color (00h mono, 01h tinge, 02h color)
  9135.         CL = animation delay factor
  9136.         DH = animation parameters
  9137.         DL = INT 10 checking (00h on, 01h off)
  9138.         SI = number of bytes available for animation code
  9139.         DI = display type (00h VGA, 01h EGA, 02h CGA, 03h HGC, 04h MDA)
  9140. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  9141.       by H&G Software (Reidar Gresseth and Chris Hook)
  9142. Range:    AH=C0h to AH=C9h, selected by configuration
  9143. SeeAlso: AH=93h,AX=C000h"AD-DOS",AX=C04Eh,AX=C052h,AX=C054h"v3"
  9144. SeeAlso: INT 14/AX=AA01h
  9145. Index:    screen saver;Explosiv
  9146. --------V-2FC052-----------------------------
  9147. INT 2F - Explosiv v2.00+ - UNINSTALL
  9148.     AX = C052h
  9149.     DX:BX = address to return to on successful uninstall
  9150. Return: at specified address if successful
  9151.     AL = 53h on error
  9152. Note:    specified return address must have the segment of the caller's PSP
  9153. SeeAlso: AX=C050h
  9154. Index:    screen saver;Explosiv
  9155. --------V-2FC054-----------------------------
  9156. INT 2F - Explosiv v2.x - GET ANIMATION DELAY FACTOR
  9157.     AX = C054h
  9158. Return: AL = delay factor
  9159. SeeAlso: AX=C057h
  9160. Index:    screen saver;Explosiv
  9161. --------V-2FC054-----------------------------
  9162. INT 2F - Explosiv v3.0+ - UPDATE PARAMETERS
  9163.     AX = C054h
  9164.     BX = new interval in clock ticks
  9165.     CH = animation display color (00h mono, 01h tinge, 02h color)
  9166.     CL = animation delay factor
  9167.     DH = animation parameters
  9168.     DL = INT 10 checking (00h on, 01h off)
  9169. SeeAlso: AX=C050h
  9170. Index:    screen saver;Explosiv
  9171. --------V-2FC055-----------------------------
  9172. INT 2F - Explosiv v2.x - SET BLANKING INTERVAL
  9173.     AX = C055h
  9174.     BX = new interval in clock ticks
  9175. Index:    screen saver;Explosiv
  9176. --------V-2FC056-----------------------------
  9177. INT 2F - Explosiv v2.x - SET ANIMATION DISPLAY TYPE
  9178.     AX = C056h
  9179.     BL = animated display type (00h mono, 01h color)
  9180. SeeAlso: AX=C058h"v2.x"
  9181. Index:    screen saver;Explosiv
  9182. --------V-2FC056-----------------------------
  9183. INT 2F - Explosiv v3.0+ - ENABLE/DISABLE EXPLOSIV
  9184.     AX = C056h
  9185.     BX = new state
  9186.         0000h disabled
  9187.         0100h enabled
  9188.         0101h enabled, but never blank
  9189.         0102h enabled, always blank
  9190. --------V-2FC057-----------------------------
  9191. INT 2F - Explosiv v2.x - SET ANIMATION DELAY FACTOR
  9192.     AX = C057h
  9193.     BL = delay factor
  9194. SeeAlso: AX=C054h"v2.x"
  9195. Index:    screen saver;Explosiv
  9196. --------V-2FC058-----------------------------
  9197. INT 2F - Explosiv v2.x - SET ANIMATION PARAMETER
  9198.     AX = C058h
  9199.     BL = animation parameter
  9200. Note:    the animation parameter has different interpretations for each display
  9201. SeeAlso: AX=C056h"v2.x"
  9202. Index:    screen saver;Explosiv
  9203. --------V-2FC058-----------------------------
  9204. INT 2F - Explosiv v3.0+ - LOAD NEW ANIMATION DISPLAY CODE
  9205.     AX = C058h
  9206.     BX = file handle for file containing display code
  9207.     CX = number of bytes to load
  9208.     DX = offset at which animation code should be loaded
  9209. Return: AL = status (see #2239)
  9210. Note:    if AL=00h-03h on return, the file will be closed
  9211. Index:    screen saver;Explosiv
  9212.  
  9213. (Table 2239)
  9214. Values for Explosiv function status:
  9215.  00h    successful
  9216.  01h    code too large to available space
  9217.  02h    no data read, load aborted
  9218.  03h    incomplete load, default blanking display loaded instead
  9219.  58h    unexpected offset in DX
  9220. --------V-2FC059-----------------------------
  9221. INT 2F - Explosiv v2.x - DISABLE EXPLOSIV
  9222.     AX = C059h
  9223. Note:    clears flag set by AX=C05Ah
  9224. SeeAlso: AX=C05Ah
  9225. Index:    screen saver;Explosiv
  9226. --------V-2FC05A-----------------------------
  9227. INT 2F u - Explosiv v2.x - ENABLE EXPLOSIV
  9228.     AX = C05Ah
  9229.     BL = ???
  9230. Note:    sets flag cleared by AX=C059h then stores BL
  9231. SeeAlso: AX=C059h,AX=C05Bh
  9232. Index:    screen saver;Explosiv
  9233. --------V-2FC05B-----------------------------
  9234. INT 2F - Explosiv v2.x - CHANGE ANIMATION DISPLAY
  9235.     AX = C05Bh
  9236.     BL = animation display
  9237. Note:    this function fails silently if the requested display is not in memory
  9238. SeeAlso: AX=C05Ah,AX=C05Ch
  9239. Index:    screen saver;Explosiv
  9240. --------V-2FC05C-----------------------------
  9241. INT 2F - Explosiv v2.x - SET INT 10 CHECKING
  9242.     AX = C05Ch
  9243.     BL = new state of INT 10 checking (00h enabled, 01h disabled)
  9244. SeeAlso: AX=C05Bh
  9245. Index:    screen saver;Explosiv
  9246. --------v-2FC080-----------------------------
  9247. INT 2F U - AMI IAM.SYS - INSTALL ??? CALLBACK
  9248.     AX = C080h
  9249.     CX:DX -> ??? callback
  9250.     DI = segment of ??? buffer (first WORD copied into IAM.SYS)
  9251. Program: IAM.SYS is the Illegal Activity Monitor portion of American
  9252.       Megatrends, Inc.'s PC-Defender anti-virus product
  9253. Note:    also sets ??? flag
  9254. SeeAlso: AX=C081h
  9255.  
  9256. Format of IAM.SYS buffer:
  9257. Offset    Size    Description    (Table 2240)
  9258.  00h    BYTE    ???
  9259.  01h    BYTE    ???
  9260.  02h  N BYTEs    ??? (ASCIZ strings)
  9261. --------v-2FC081-----------------------------
  9262. INT 2F U - AMI IAM.SYS - CLEAR ???
  9263.     AX = C081h
  9264. Desc:    clears the ??? flag that AX=C080h sets
  9265. SeeAlso: AX=C080h
  9266. --------K-2FC0AE-----------------------------
  9267. INT 2F U - HP 100LX/200LX - PUSHKEYS - INSTALLATION CHECK
  9268.     AX = C0AEh
  9269. Return: AX = 4453h if installed
  9270.     CX = 5259h if installed
  9271. Range:    AH=C0h to AH=FFh, selected by scanning for signature
  9272. SeeAlso: AX=C000h"HP 100LX",AX=C001h"HP 100LX",AX=C0AFh"HP 100LX"
  9273. --------K-2FC0AF-----------------------------
  9274. INT 2F U - HP 100LX/200LX - PUSHKEYS - INTERNAL - GET BUFFER ADDRESS
  9275.     AX = C0AFh
  9276. Return: ES:DI -> buffer (behind code)
  9277. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  9278. SeeAlso: AX=C000h"HP 100LX",AX=C001h"HP 100LX",AX=C0AEh"HP 100LX"
  9279. --------N-2FC100-----------------------------
  9280. INT 2F U - Personal NetWare - STPIPX v1.00 - INSTALLATION CHECK
  9281.     AX = C100h
  9282. Return: AL = FFh if installed
  9283.         ES:SI -> signature string "STP-IPX$"
  9284.         BX = version??? (0001h for v1.00)
  9285.         DI corrupted
  9286. Note:    AH=C1h is the default value; STPIPX probably scans a range of
  9287.       multiplex numbers to find a free one, as LSL does
  9288. SeeAlso: AX=C000h"LSL",AX=C101h
  9289. --------N-2FC101-----------------------------
  9290. INT 2F U - Personal NetWare - STPIPX v1.00 - UNINSTALL
  9291.     AX = C101h
  9292. Return: AL = status???
  9293.     BX corrupted
  9294. SeeAlso: AX=C101h
  9295. --------N-2FC205-----------------------------
  9296. INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
  9297.     AX = C205h
  9298.     details not yet available
  9299. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  9300. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C2F0h"LapLink"
  9301. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
  9302. --------N-2FC2F0-----------------------------
  9303. INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
  9304.     AX = C2F0h
  9305.     details not yet available
  9306. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  9307. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  9308. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
  9309. --------N-2FC2F1-----------------------------
  9310. INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
  9311.     AX = C2F1h
  9312.     details not yet available
  9313. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  9314. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  9315. SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink"
  9316. --------d-2FC300-----------------------------
  9317. INT 2F - SETWPR.COM - INSTALLATION CHECK
  9318.     AX = C300h
  9319. Return: AL = FFh if installed
  9320. Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
  9321. SeeAlso: AX=C302h"SETWPR"
  9322. --------k-2FC300DX0000-----------------------
  9323. INT 2F U - SpaceManager - INSTALLATION CHECK
  9324.     AX = C300h
  9325.     DX = 0000h
  9326. Return: AL = FFh if any SpaceManager programs installed
  9327.         BX = 6F73h
  9328.         CX = 6F68h
  9329. Program: SpaceManager is an enhancement for MS-DOS DoubleSpace by Vertisoft
  9330.       Systems, Inc.
  9331. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  9332. SeeAlso: AX=C300h/DX=0666h
  9333. --------k-2FC300-----------------------------
  9334. INT 2F U - SpaceManager - INSTALLATION VERIFICATION
  9335.     AX = C300h
  9336.     DX = program identifier (see #2241) or 0666h for any SpaceManager prog
  9337.     BX = 4F53h ('OS')
  9338.     CX = 4F48h ('OH')
  9339. Return: AL = FFh if BX/CX as specified and specified program installed
  9340.         BX = 6F73h ('os')
  9341.         CX = 6F68h ('oh')
  9342. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  9343. Note:    this call is chained if BX,CX, or DX are not as specified above
  9344. SeeAlso: AX=C300h/DX=0000h
  9345.  
  9346. (Table 2241)
  9347. Values for SpaceManager program identifier:
  9348.  9000h    SMOUNT (SuperMount)
  9349.  9001h    SELECTC (SelectCompress)
  9350.  9002h    SUPERX (SuperExchange)
  9351.  9003h    FORTUNE (FortuneTeller)
  9352. --------k-2FC301-----------------------------
  9353. INT 2F U - SpaceManager - ???
  9354.     AX = C301h
  9355.     DX = program identifier (9000h,9001h,9003h) (see #2241)
  9356.     ???
  9357. Return: ???
  9358. --------N-2FC301-----------------------------
  9359. INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
  9360.     AX = C301h
  9361.     details not yet available
  9362. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  9363. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  9364. SeeAlso: AX=C2F0h"LapLink",AX=C3F0h"LapLink",AX=C3F1h"LapLink"
  9365. --------k-2FC302-----------------------------
  9366. INT 2F U - SpaceManager - ENABLE PROGRAM
  9367.     AX = C302h
  9368.     DX = program identifier (9000h,9001h,9003h) (see #2241)
  9369. Return: AX destroyed
  9370. SeeAlso: AX=C303h,AX=C306h
  9371. --------d-2FC302-----------------------------
  9372. INT 2F - SETWPR.COM - SET WRITE-PROTECTION STATE
  9373.     AX = C302h
  9374.     BL = new state
  9375.         00h disk may be written
  9376.         01h disk write-protected
  9377. Return: AL = FFh if installed
  9378. Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
  9379. SeeAlso: AX=C300h"SETWPR"
  9380. --------k-2FC303-----------------------------
  9381. INT 2F U - SpaceManager - DISABLE PROGRAM
  9382.     AX = C303h
  9383.     DX = program identifier (9000h,9001h,9003h) (see #2241)
  9384. Return: AX destroyed
  9385. SeeAlso: AX=C302h,AX=C306h
  9386. --------k-2FC304-----------------------------
  9387. INT 2F U - SpaceManager - GET PER-DRIVE ENABLEMENT TABLE
  9388.     AX = C304h
  9389.     DX = program identifier (9000h,9001h,9003h) (see #2241)
  9390. Return: ES:BX -> 26-byte drive table (00h disabled for drive, 01h enabled)
  9391.     AX destroyed
  9392. --------k-2FC305DX9003-----------------------
  9393. INT 2F U - SpaceManager - FORTUNE.EXE - NOP
  9394.     AX = C305h
  9395.     DX = 9003h
  9396. Return: AX destroyed
  9397. --------k-2FC305-----------------------------
  9398. INT 2F U - SpaceManager - ???
  9399.     AX = C305h
  9400.     DX = program identifier (9000h,9001h) (see #2241)
  9401.     ???
  9402. Return: ???
  9403. --------k-2FC306-----------------------------
  9404. INT 2F U - SpaceManager - CHECK WHETHER PROGRAM ENABLED
  9405.     AX = C306h
  9406.     DX = program identifier (9000h,9001h,9003h) (see #2241)
  9407. Return: AL = current state (00h disabled, FAh enabled)
  9408.     AH destroyed
  9409. SeeAlso: AX=C302h,AX=C303h
  9410. --------k-2FC307DX9001-----------------------
  9411. INT 2F U - SpaceManager - SELECTC - ???
  9412.     AX = C307h
  9413.     DX = 9001h
  9414.     BX = ???
  9415.     CX = ???
  9416.     ???
  9417. Return: ???
  9418. --------k-2FC308DX9001-----------------------
  9419. INT 2F U - SpaceManager - SELECTC - ???
  9420.     AX = C308h
  9421.     DX = 9001h
  9422.     ???
  9423. Return: ???
  9424. --------N-2FC3F0-----------------------------
  9425. INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
  9426.     AX = C3F0h
  9427.     details not yet available
  9428. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  9429. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  9430. SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink",AX=C3F1h"LapLink"
  9431. --------N-2FC3F1-----------------------------
  9432. INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
  9433.     AX = C3F1h
  9434.     details not yet available
  9435. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  9436. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  9437. SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink",AX=C3F0h"LapLink"
  9438. --------d-2FC64CBX5553-----------------------
  9439. INT 2F U - Smart Prompt - INSTALLATION CHECK
  9440.     AX = C64Ch
  9441.     BX = 5553h
  9442. Return: AX = 4CC6h if installed
  9443.     BX = 5355h if installed
  9444. Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which forces
  9445.       an immediate flush of SmartDrive's (and compatible caches') buffers
  9446.       on returning to the DOS prompt
  9447. --------V-2FC700CX434C-----------------------
  9448. INT 2F u - COLAP - INSTALLATION CHECK
  9449.     AX = C700h
  9450.     CX = 434Ch  "CL"
  9451. Return: AL = FFh if installed
  9452. Program: colap.com is a freeware TSR by Eric Meyer which controls contrast
  9453.       and brightness of color laptops by changing the VGA palette colors;
  9454.       for Toshiba laptops there are more hotkeys for shutting off display
  9455.       and harddisk.
  9456. --------v-2FC900BP0000-----------------------
  9457. INT 2F U - ThunderByte??? - INSTALLATION CHECK
  9458.     AX = C900h
  9459.     BP = 0000h
  9460. Return: AL = FFh if installed
  9461.         BP >= 0014h
  9462. Note:    called by TBSCANX
  9463. SeeAlso: AX=C987h,AX=CA00h
  9464. --------v-2FC987-----------------------------
  9465. INT 2F U - ThunderByte??? - DISINFECT FILE???
  9466.     AX = C987h
  9467.     BX:DX -> filename
  9468.     BX:CX -> virus name
  9469. Return: AX = status
  9470.         0000h successful???
  9471. Note:    called by TBSCANX
  9472. SeeAlso: AX=CA00h
  9473. --------r-2FC9FF-----------------------------
  9474. INT 2F C - StackMan - INSTALLATION BROADCAST
  9475.     AX = C9FFh
  9476.     BL = BCD version number
  9477.     CX = number of stacks
  9478.     DX = stack size in bytes
  9479. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  9480.       which functions as a replacement for the DOS STACK= command as well
  9481.       as permitting multiple TSRs to share a pool of stack space
  9482. Notes:    called by StackMan when it goes resident to inform interested TSRs that
  9483.       its API is available
  9484.     the installation check consists of testing for the string "STACKXXX" at
  9485.       offset 0Ah from the INT B4 handler
  9486. SeeAlso: INT B4"StackMan",INT B5"StackMan"
  9487. Index:    installation check;STACKMAN|broadcasts;STACKMAN installation
  9488. --------F-2FCA-------------------------------
  9489. INT 2F - FAXPLUS - FAX TSR
  9490.     AH = CAh
  9491.     ???
  9492. Return: ???
  9493. Program: FAXTSR is a resident FAX send/receive module for FAXPLUS by Frans
  9494.       Veldman
  9495. SeeAlso: AH=2Ah"Gammafax"
  9496. --------v-2FCA00BX5442-----------------------
  9497. INT 2F - TBSCANX - INSTALLATION CHECK
  9498.     AX = CA00h
  9499.     BX = 5442h ('TB')
  9500. Return: AL = state
  9501.         00h not installed
  9502.         FFh installed
  9503.         BX = 7462h ('tb') if BX was 5442h on entry
  9504. Program: TBSCANX is a resident virus scanning module by Frans Veldman.
  9505. Note:    programs may perform virus checks on themselves, other program files,
  9506.       or their data files by invoking the TBSCANX API.
  9507. SeeAlso: AX=4653h,AX=C900h
  9508. --------v-2FCA01-----------------------------
  9509. INT 2F - TBSCANX - GET STATUS
  9510.     AX = CA01h
  9511. Return: AH = BCD version number (v2.2+)
  9512.         CAh for versions before 2.2
  9513.     AL = state (00h = disabled, 01h = enabled)
  9514.     CX = number of signatures which will be searched
  9515. ---v2.0---
  9516.     BX = EMS handle, 0000h if not using EMS
  9517. ---v2.3+---
  9518.     BX = segment of swap area, 0000h if not swapped
  9519.     DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
  9520. SeeAlso: AX=CA02h
  9521. --------v-2FCA02-----------------------------
  9522. INT 2F - TBSCANX - SET STATE
  9523.     AX = CA02h
  9524.     BL = new state (00h = disabled, 01h = enabled)
  9525. SeeAlso: AX=CA01h
  9526. --------v-2FCA03-----------------------------
  9527. INT 2F - TBSCANX - SCAN BUFFER
  9528.     AX = CA03h
  9529.     CX = size of buffer
  9530.     DS:DX -> buffer containing data to scan
  9531. Return: CF clear if no virus signatures found
  9532.         BX,ES destroyed
  9533.     CF set if signature found
  9534.         ES:BX -> ASCIZ virus name (v2.3+)
  9535.         DS:DX -> ASCIZ virus name (v2.0)
  9536.     AX,CX,DX destroyed (v2.3+)
  9537.     all other registers except CS:IP and SS:SP destroyed (v2.0)
  9538. SeeAlso: AX=CA04h
  9539. --------v-2FCA04-----------------------------
  9540. INT 2F - TBSCANX - SCAN FILE
  9541.     AX = CA04h
  9542.     DS:DX -> filename
  9543. Return: CF clear if no virus signatures found
  9544.         BX,ES destroyed
  9545.     CF set if signature found
  9546.         ES:BX -> ASCIZ virus name
  9547.     AX,CX,DX destroyed
  9548. Note:    this function requires at least 4K free memory
  9549. SeeAlso: AX=CA03h
  9550. --------U-2FCAFEBX0000-----------------------
  9551. INT 2F U - THELP v3.0 - INSTALLATION CHECK
  9552.     AX = CAFEh
  9553.     BX = 0000h
  9554. Return: BX = segment of resident code if installed
  9555.         0000h if not installed
  9556. SeeAlso: AX=5453h,INT 2D"AMIS"
  9557. --------!---Section--------------------------
  9558.